まあ、私はそれらをxamlでまったく宣言していません。代わりに、 から私のコンバーターを追加で派生させ MarkupExtensionます。このような:
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) { }
}
これにより、次のようにコンバーターをどこでも使用できます。
Source="{Binding myValue, Converter={converters:MyValueConverter}}"
ここで、converters は、コンバーターを宣言した名前空間です。
このトリックは、古いスタック オーバーフロー スレッドからのみ学びました。