有没有一种方法可以在不在资源中定义的情况下使用 ValueConverter?因为语法非常冗长。
最佳答案
您可以使用 MarkupExtension 来最小化所需的 xaml 代码量。例如:
public class MyConverter: MarkupExtension, IValueConverter
{ 私有(private)静态 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}}
这种方法还有一个额外的优势,那就是确保您的所有转换器都是单例。
这article很好地解释了概念并提供了示例代码。
关于WPF:有没有一种方法可以在不定义资源的情况下使用 ValueConverter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277966/