2013-11-28 20 views
2

下面的文本重演了很多在我的XAML文件,与只有ConverterParameter的变化:快捷方式WPF文字的绑定属性

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

是否有可能创建一个快捷方式呢?

也许是这样的:

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

它可以提高可读性,并帮助大众改变转换器名称变更的情况。

+0

看一看'MarkupExtensions',你应该能够创建一个类似于你所需要的财产以后。 http://tech.pro/tutorial/883/wpf-tutorial-fun-with-markup-extensions –

回答

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}" /> 
0

您可以创建自定义的MarkupExtension。 有上的MarkupExtension一个很好的教程在CodeProject: 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. 
    } 
}