2013-11-28 32 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. 
    } 
}