有没有一种方法可以在不定义资源的情况下使用ValueConverter?目前的语法相当啰嗦。
在您的转换器中,您可以拥有一个静态属性或字段,您可以在xaml中引用它。无需添加资源。
public class MyConverter : IValueConverter
{
public static readonly MyConverter Instance = new MyConverter();
... }
同时,在XAML中
<TextBlock Text="{Binding Path=., Converter={x:Static l:MyConverter.Instance}}" />
public class MyConverter: MarkupExtension, IValueConverter
私有静态变量MyConverter _converter;
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something (if needed)
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
_converter = new MyConverter();
return _converter;
}
你最终会得到这样的语法:
{Binding Converter={conv:MyConverter}}
<conv:NegatingConverter x:Key="NegatingConverter" />
Converter="{StaticResource NegatingConverter}"