WPF:有没有一种方法可以在不定义资源的情况下使用 ValueConverter?

标签 wpf

有没有一种方法可以在不在资源中定义的情况下使用 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/

相关文章:

c# - Entity Framework 中 DataGrid (WPF) 的优雅过滤

wpf - 最佳实践 WPF Prism 资源

c# - 将数据模板元素绑定(bind)到子类的属性

c# - WPF 错误的 KeyDown ASCII 代码

wpf - 组合框和IDataErrorInfo

.net - 如何在 WPF 中检测鼠标双击左键?

c# - wpf中页面之间的通信

c# - C#WPF INotifyChanged值相同时不调用

c# - 将mysql数据绑定(bind)到wpf应用程序

wpf - 覆盖注册名称