以下文字在我的XAML文件中重复了很多,只更改了ConverterParameter
:
<TextBlock Text="{Binding TextResource, Converter={StaticResource MyConverter}, ConverterParameter=MyText }">
是否可以为它创建快捷方式?
可能是这样的:
<TextBlock Text="{MyBinding Param=MyText }">
它可以提高可读性,并有助于在转换器名称更改时进行质量更改。
答案 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.
}
}