Should I declare converters in App.xaml or as a per-file resource?

前端 未结 3 1229
逝去的感伤
逝去的感伤 2020-12-14 03:28

When declaring converters in a WPF application, should I:

  1. Declare all my converters in the App.xaml (i.e. in
3条回答
  •  忘掉有多难
    2020-12-14 04:04

    Well, I just don't declare them in xaml at all. Instead, I additionally derive a converter of mine from MarkupExtension. Like this:

    public class MyValueConverter : MarkupExtension, IValueConverter
    {
        private static MyValueConverter _converter = null;
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            if (_converter == null) _converter = new MyValueConverter();    
            return _converter;
        }
    
        public object Convert
         (object value, Type targetType, object parameter, CultureInfo culture) { }
        public object ConvertBack
         (object value, Type targetType, object parameter, CultureInfo culture) { }
    }
    

    This allows me to use my converter anywhere, like this:

    Source="{Binding myValue, Converter={converters:MyValueConverter}}"
    

    where converters is the namespace in which I have declared my converter.

    Learned this trick from an old stackoverflow thread only.

提交回复
热议问题