の一部のコントロールのコンバーターを定義しようとしていますWindow
。私(およびほとんどの人)が通常行う方法は、独自のクラスでコンバーターを定義し、そのクラスのインスタンスをインスタンス化してWindow.Resources
から使用することです。この特定のケースの問題は、コンバーターがウィンドウの にアクセスする必要があることですDataContext
。そのため、ウィンドウのコード ビハインドにそれを実装することにしました。
public partial class MyWindow : Window, IValueConverter
{
public MyWindow()
{
InitializeComponent();
// Other operations
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Access the DataContext and return a value
return new object();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
問題は、XAML での使用方法がわからないことです。データ コンテキストが失われるため、明らかに、このクラスの新しいインスタンスをインスタンス化したくありません。私は試した
"{Binding ElementName=someElement, Path=SomeProperty, Converter={Binding ElementName=myWindow}"
myWindow
このウィンドウの名前はどこにありますか。次のような実行時エラーが発生します。
"A 'Binding' cannot be set on the 'Converter' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject."
これを達成する方法はありますか?どんな助けでも大歓迎です。