【发布时间】:2014-09-03 16:20:38
【问题描述】:
在 Metro 应用程序中使用应用程序本地化时,我遇到了一个非常奇怪的问题。在我的应用启动功能中,我已经注册了应用语言更改事件。
ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += QualifierValues_MapChanged;
private void QualifierValues_MapChanged(IObservableMap<string, string> sender, IMapChangedEventArgs<string> @event)
{
ResourceManager.Current.DefaultContext.Reset();
}
我有包含语言的ComboBox 控件。当用户选择任何语言时,我会覆盖默认语言,如图所示。
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = new System.Globalization.CultureInfo((string)((ComboBoxItem)e.AddedItems[0]).Tag);
这可以正常工作并在 Windows 8.1 中调用 MapChanged 事件,但是当我在 Windows 8.0 中测试相同的应用程序时,它无法正常工作。我调试了这个问题,发现 MapChanged 事件有时在PrimaryLanguageOverride 更改时不会触发,有时它会触发。这是windows的问题还是我做错了什么。
【问题讨论】:
-
请给我一个拒绝投票的理由。
标签: c# windows-8 microsoft-metro windows-8.1