如何访问 xamarin.forms 中的 resx 文件?

How access to resx file in xamarin.forms?

我整天都在尝试获取resx文件的资源字符串。我这样试试:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="test.MainPage">

<StackLayout>
    <Label Text="{x:Static res:AppResources.String1}"/>
</StackLayout>

</ContentPage>

我直接在 test.android 项目中使用 String1 资源创建了一个 AppResources 文件,并在 public 中进行了设置。 我怎样才能在 xaml 上找到这个资源?网上找的各种方法都试过了,都不行。

您需要为 resx 文件定义 res 命名空间并将其添加到页面顶部:

<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:res="clr-namespace:YourResxFile.Namespace"
    x:Class="test.MainPage">
    

有关本地化的更多信息,请参阅 Xamarin.Forms String and Image Localization

在你的情况下你可以使用:xmlns:res="clr-namespace:test"

I created an AppResources file in directly in the test.android project with a String1 resource and set in public. How can I get to this resource on xaml?

创建一个 Xamarin.Forms 项目,然后将 AppResources.resx 直接添加到您的 Forms 项目中。我创建了一个App1项目供参考。

Xaml:定义res.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:res="clr-namespace:App1"
         x:Class="App1.Page3">
<ContentPage.Content>
    <StackLayout>
        <Label Text="{x:Static res:AppResources.String1}"/>
    </StackLayout>
</ContentPage.Content>
</ContentPage>

将 App1.Android 作为启动项目设置为 运行。

如果你想创建一个文件夹来放置.resx文件,你可以像下面这样定义resx。

xmlns:res="clr-namespace:App1.folderName"