【问题标题】:Binding resource with Xaml x:Uid some times not working使用 Xaml x:Uid 绑定资源有时不起作用
【发布时间】:2016-02-27 09:15:51
【问题描述】:
我有一个具有两种语言的 UWP 应用。对于我使用过的一些标签:Loader.GetString("LableName") 在代码隐藏中,而对于其他标签,我使用过:x:Uid 在 XAML 中。
用户可以使用这样的按钮更改CurrentCulture:
CultureInfo.CurrentCulture = new CultureInfo("fa-IR");
第一次完全正确,
但是下一次,点击按钮后,那些绑定在代码隐藏中的标签将正常工作,
但是那些在 XAML 中绑定了X:Uid 的仍然显示以前的语言资源字符串。
有人可以帮我吗?
【问题讨论】:
标签:
windows-10
win-universal-app
uid
currentculture
【解决方案1】:
在WPF 中,我们使用类似的方法在窗口元素(reference)上应用文化,在您的UWP 应用程序中使用它,希望对您有所帮助:
public MyWindow()
{
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
InitializeComponent();
}
您还可以在 App 类中为整个应用程序全局设置语言:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Set application startup culture based on config settings
string culture = ConfigurationManager.AppSettings["Culture"];
SetCulture(culture);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
【解决方案2】:
可以使用按钮属性:双击按钮,之后必须在“button_click”方法中设置标签的值。