support for dynamic switching languages
This commit is contained in:
1 parent
7a39b18f0b
commit
95f35c7366
89 files changed
+3697
-549
No files matched your search
@@ -0,0 +1,42 @@
|
||||
using HandyControl.Properties.Langs;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Markup;
|
||||
|
||||
namespace HandyControl.Tools.Extension
|
||||
{
|
||||
public class LangExtension : MarkupExtension
|
||||
{
|
||||
public LangExtension()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public LangExtension(string key) => Key = key;
|
||||
|
||||
public override object ProvideValue(IServiceProvider serviceProvider)
|
||||
{
|
||||
if (!(serviceProvider.GetService(typeof(IProvideValueTarget)) is IProvideValueTarget pvt))
|
||||
return null;
|
||||
|
||||
if (!(pvt.TargetObject is DependencyObject targetObject))
|
||||
return null;
|
||||
|
||||
if (!(pvt.TargetProperty is DependencyProperty targetProperty))
|
||||
return null;
|
||||
|
||||
var binding = new Binding(Key)
|
||||
{
|
||||
Source = LangSource,
|
||||
Mode = BindingMode.OneWay
|
||||
};
|
||||
BindingOperations.SetBinding(targetObject, targetProperty, binding);
|
||||
return binding.ProvideValue(serviceProvider);
|
||||
}
|
||||
|
||||
public string Key { get; set; }
|
||||
|
||||
public virtual object LangSource => LangDecorator.Instance;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user