소스 코드를 확인한 결과 BLoc이 그렇게했다고 생각하지 않습니다. 그러나 나는 같은 결과를 보관하는 다른 방법을 발견했다.
this 대답을 바탕으로, 나는이 해결책을 생각해 냈습니다. 보기에 자원 키를 제공하는 대신 자원 값을 제공합니다. 문화가 변경되면 값도 변경됩니다. 다음은 핵심 구현입니다.
public class MyViewModel : INotifyPropertyChanged {
public MyViewModel()
{
// Properties.Resources is my Resources.resx file and String1 is my resource key
BindPropertyToResource(nameof(Name), nameof(Properties.Resources.String1));
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged();
}
}
}
protected void BindPropertyToResource(string propertyName, string resourceKey){
WPFLocalizeExtension.Providers.ResxLocalizationProvider resxLocalizationProvider
= WPFLocalizeExtension.Providers.ResxLocalizationProvider.Instance;
WPFLocalizeExtension.Providers.ResxLocalizationProvider.SetDefaultAssembly(resxLocalizationProvider, System.Reflection.Assembly.GetCallingAssembly().GetName().Name);
WPFLocalizeExtension.Providers.ResxLocalizationProvider.SetDefaultDictionary(resxLocalizationProvider, nameof(Properties.Resources));
var targetProperty = this.GetType().GetProperty(propertyName);
var locBinding = new WPFLocalizeExtension.Extensions.LocTextExtension(resourceKey);
locBinding.SetBinding(this, targetProperty);
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion // INotifyPropertyChanged Members
}
희망 해결 방법은이 문제를 해결합니다.
동일한 문제가 있습니다. 어떤 해결책을 찾았습니까? –