我正在开发一个UWP应用程序,它将被侧载并从WebAPI获得大部分配置 . 我希望能够在XAML和Code中使用已翻译的标签,因为我看到“UWP方式”是使用资源文件,但我不希望将字符串存储在项目本身,我希望它们从WebAPI然后使用缓存的键值distionary .
在代码中获取字符串显然没有问题,问题在于XAML - 在WPF中使用自定义MarkupExtension非常简单,但是因为我们在UWP中没有MakrupExtensions,有没有一种干净的方法呢?
编辑:
到目前为止我尝试了什么:
-
为所有控件创建基类,其对象具有索引器以获取翻译 - 因为x不起作用:Bind不支持基于字符串的索引器
-
试图使用自定义动态对象 - 因为x:Bind不支持动态对象而无法正常工作
-
试图将一些自己的类作为资源并从中访问属性 - 再次无效
目前唯一的方法似乎是创建一个庞大的类,其中每个翻译/标签必须拥有它自己的属性,或者使用标准的Binding(或从它派生的某个类) .
EDIT_2:
忘了,另一个用例是在xaml资源中使用模板,而不仅仅是控件和页面 .
1 回答
好吧,看起来我找到了一个解决方案,使用如下所述的
CustomResource
功能:https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/customresource-markup-extension
如果我实现这样的类:
并在
App.xaml.cs
构造函数中初始化它:然后我可以通过以下方式从XAML访问它:
它有效 .
However... VisualStudio中的XAML设计器无法理解
CustomResource
标记扩展,并将其作为Cannot resolve symbol 'CustomResource'
消息的错误加下划线 . 但它编译和工作,所以现在必须足够好 .