绑定属性中的WPF文本的快捷方式

时间:2013-11-28 03:32:03

标签: c# wpf xaml data-binding windows-phone-8

以下文字在我的XAML文件中重复了很多,只更改了ConverterParameter

<TextBlock Text="{Binding TextResource, Converter={StaticResource MyConverter}, ConverterParameter=MyText }">

是否可以为它创建快捷方式?

可能是这样的:

<TextBlock Text="{MyBinding Param=MyText }">

它可以提高可读性,并有助于在转换器名称更改时进行质量更改。

2 个答案:

答案 0 :(得分:3)

您可以创建自定义绑定:

public class MyBinding : Binding
{
    public String Param {
        get {return this.ConverterParameter.ToString();}
        set {this.ConverterParameter = value;}

    }

    // usage: Text="{local:MyBinding Param=MyText}"
    public MyBinding() : base("TextResource")
    {
        this.Converter = new MyConverter();
    }

    // usage: Text="{local:MyBinding MyText}"
    public MyBinding(string param) : base("TextResource")
    {
        this.Converter = new MyConverter();
        this.Param = param;
    }
}

然后像这样使用它:

<TextBlock Text="{local:MyBinding MyText1}" />
<TextBlock Text="{local:MyBinding Param=MyText2}" />

答案 1 :(得分:0)

您可以创建自定义MarkupExtension。 在CodeProject上有一个关于MarkupExtension的优秀教程: http://www.codeproject.com/Articles/140618/WPF-Tutorial-TypeConverter-Markup-Extension

您的扩展程序如下所示:

[MarkupExtensionReturnType(typeof(string))]
public class MyBindingExtension : MarkupExtension
{
    private readonly string _key;

    public MyBindingExtension(string key)
    {
        _key = key;
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        // TODO: your code here to retrieve the converted value.
    }
}