当前位置: 首页 > 编程语言 > C#

在XAML中直接使用.resw文件中的字符串分享

时间:2023-04-10 16:00:23 C#

.Content="HelloWorld"但也可以这样做:XAML(pseudocode):Resources.resw:buttonLabel="HelloWorld"我想在第二个例子中这样做原因是因为这是一个应用程序我从iOS和Android移植到WP。我想将iOS或Android字符串文件转换为.resw语法,但不遍历每个字符串并添加.Content或.Text或其他内容。有一个简单的解决方案吗?我曾经做过类似的事情,我们在Android字符串资源文件中添加任何新字符串,然后使用自定义构建工具将这些字符串转换为iOS和Windows格式。Android字符串可能如下所示:Hello,World!我们的工具将其转换为Windows字符串资源:Hello,World!接下来,添加一个对提供的值不起作用的转换器,而不是假设它的参数是资源ID:publicobjectConvert(objectvalue,TypetargetType,objectparameter,stringlanguage){stringresourceIdas=parameter;返回!string.IsNullOrEmpty(resourceId)?Loader.GetString(resourceId):DependencyProperty.UnsetValue;}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,stringlanguage){thrownewNotSupportedException();现在让您的XAML可以使用此转换器,可能是这样的:最后,按如下方式设置Button的Content属性:请注意,我们没有向转换器提供任何值。(在WPF中,我会创建一个标记扩展。不幸的是,这个选项在UWP中不可用,所以我想出了这个无值转换器选项作为替代方案。)如果你想要更笨拙,请考虑:如果你将您的资源本地化为不同的语言,您可以动态更改语言。(注意Mode=OneWay而不是Mode=OneTime。)您可以使用CustomXamlResourceLoader:publicclassXamlResourceLoader:CustomXamlResourceLoader{privatereadonlyResourceLoader_loader;publicXamlResourceLoader(){_loader=ResourceLoader.GetForViewIndependentUse();}protectedoverrideobjectGetResource(stringresourceId,stringobjectType,stringpropertyName,stringpropertyType){return_loader.GetString(resourceId)??资源编号;然后在App.xaml.cs构造函数中:CustomXamlResourceLoader.Current=newXamlResourceLoader();最后在你的xaml中:以上是C#学习教程:直接在XAML中使用.resw文件中的字符串分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望你会更加关注它。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处: