如何将自定义数据上下文中的绑定与自定义标记相结合

时间:2010-12-02 10:56:46

标签: wpf binding datacontext markup

我想结合自定义数据上下文中的绑定,该上下文包含ViewModel类和ResourceProvider类。自定义数据上下文设置为窗口DataContext。

我这样使用它:

<Button x:Name="btnShow" Content="Show" Command="{Binding View.HandleShow}"/>

哪个View是dataContext的属性。我希望使用最小标记通过自定义数据上下文进行本地化,并在我创建自己的数据上下文的代码中设置来自其他源的ResourceProvider

是否有可能在与该行代码类似的内容中执行此操作:

 <TextBlock Text="{Binding Res.Key=test}" />

我的资源提供程序从标记扩展继承一个Property:Key。

感谢您的任何建议

2 个答案:

答案 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