我试图在我的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
解决方案资源管理器
答案 0 :(得分:8)
在共享项目中创建RESX文件会导致问题。您可以在Xamarin论坛中看到有关此内容的几篇冗长帖子(例如here和here)。
允许您使用所需方法的最简单的解决方案是在解决方案中创建新的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方法时返回它。