在Xamarin.Forms中使用XAML中的资源文件

时间:2018-02-18 14:44:30

标签: xaml xamarin xamarin.forms resx

我试图在我的XAML中使用资源文件。出于某种原因,我不断收到错误,找不到类型Texts。不知道我在这里做错了什么。

XAML

<?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:local="clr-namespace:CashRegisterApp.Resources"
             x:Class="CashRegisterApp.Start">
    <ContentPage.Content>
        <StackLayout
            VerticalOptions="CenterAndExpand" 
                HorizontalOptions="CenterAndExpand" >
        <Label Text="{x:Static local:Texts.Start}"/>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

RESX

resx file

解决方案资源管理器

solution explorer

2 个答案:

答案 0 :(得分:8)

在共享项目中创建RESX文件会导致问题。您可以在Xamarin论坛中看到有关此内容的几篇冗长帖子(例如herehere)。

允许您使用所需方法的最简单的解决方案是在解决方案中创建新的PCL库.NET标准库,在那里创建RESX文件并将其可见性设置为public。然后,您将能够按预期使用x:Static语法来使用它们。

许多开发人员使用自定义标记扩展形式的替代方案,例如此forum ClaudioPereira 的解决方案。这进一步简化了语法。

最后,有关Xamarin.Forms的最详细信息,请参阅official documentation

答案 1 :(得分:1)

我也遇到过这个问题,我希望这个答案可以帮助未来的人解决这个问题。

以下this指南教我如何在Xamarin表单中设置resx文件。 他们的TranslateExtension允许直接从Xaml引用resx文件。

不幸的是,在原始形式中,它并没有在区域设置中获得运行时更改。 这可以通过更改他们的&#34; Localize&#34;来解决。 class(在本机平台上),通过SetLocale方法更改时保留CultureInfo的引用,并在调用GetCurrentCultureInfo方法时返回它。