下載app免費(fèi)領(lǐng)取會員
在WPF 用。net資源做多語言話的話,如果不要求動態(tài)切換可以在Xaml里直接使用Resource,在使用之前設(shè)置一下CultureInfo就可以了
如:
public MainWindow()
{
Res.Culture = CultureInfo.GetCultureInfo("en-US");
InitializeComponent();
}
如果要動態(tài)切換的話可以使用擴(kuò)展標(biāo)記:
public class LanguageUtils : MarkupExtension,INotifyPropertyChanged
{
private static ResourceManager manager = Res.ResourceManager;
private static EventHandler<EventArgs> LanguageChangeEvent;
public static void SetLanguage(string culture)
{
Res.Culture =new CultureInfo(culture);
if (LanguageChangeEvent != null)
LanguageChangeEvent(null, null);
}
static LanguageUtils()
{
// Res.Culture = new CultureInfo("en-US");
}
public LanguageUtils()
{
LanguageChangeEvent += LanguageChanged;
}
private void LanguageChanged(object sender, EventArgs e)
{
RaisePropertyChanged();
}
public string Key
{
get;
set;
}
public string Value
{
get
{
return manager.GetString(Key, Res.Culture);
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged()
{
if(PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
FrameworkElement elm = target.TargetObject as FrameworkElement;
Binding binding = new Binding("Value")
{
Source = this,
Mode = BindingMode.OneWay
};
object obj = binding.ProvideValue(serviceProvider);
return obj;
}
}
在xaml里:
<Button Content="{local:LanguageUtils Key=String1}" HorizontalAlignment="Left" Margin="183,132,0,0" VerticalAlignment="Top" Width="212" Click="Button_Click"/>
切換事件:
private void Button_Click(object sender, RoutedEventArgs e)
{
if(Res.Culture.Name=="zh-CN")
LanguageUtils.SetLanguage("en-US");
else
LanguageUtils.SetLanguage("zh-CN");
}
本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。
下一篇:二次開發(fā)教程:Revit開發(fā)獲取梁的寬和高
推薦專題