我想结合自定义数据上下文中的绑定,该上下文包含ViewModel类和ResourceProvider类。自定义数据上下文设置为窗口DataContext。
我这样使用它:
<Button x:Name="btnShow" Content="Show" Command="{Binding View.HandleShow}"/>
哪个View是dataContext的属性。我希望使用最小标记通过自定义数据上下文进行本地化,并在我创建自己的数据上下文的代码中设置来自其他源的ResourceProvider
是否有可能在与该行代码类似的内容中执行此操作:
<TextBlock Text="{Binding Res.Key=test}" />
我的资源提供程序从标记扩展继承一个Property:Key。
感谢您的任何建议
答案 0 :(得分:1)
您可以使用以下代码创建自定义标记扩展名:
public class LocalizedBinding : MarkupExtension
{
public String Key { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
IProvideValueTarget target = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
//use target.TargetObject and target.TargetProperty to provide value based on Key
}
}
并使用它:
<TextBlock Text="{local:LocalizedBinding Key=SomeKey}" />
答案 1 :(得分:0)
我尝试了解决方案,但我更喜欢避免使用前缀本地因为localizedBinding来自不同的源并使用IoC模式因为我创建了CustomDataContext