ListBoxのSelectedIndex>=0であるかどうかに基づいて、コントロールのIsEnabledプロパティを設定しています。これはコードビハインドで実行できますが、頻繁に実行するため、この動作の値コンバーターを作成したいと思いました。
この値コンバーターを作成してタスクを処理し、IsEnabledプロパティにバインドしました。
[ValueConversion(typeof(Selector), typeof(bool))]
public class SelectorItemSelectedToBooleanConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || !(value is Selector))
return null;
var control = value as Selector;
return control.SelectedIndex >= 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
コンバーターは、アプリケーションがロードされたときに1回だけ呼び出されます。SelectedIndexが変更されても起動しません。
したがって、私の質問は、値コンバーターが起動する原因は何ですか?バインドされたデータが変更されたときだと思いますが、さまざまな状況でコンバーターを強制的に起動する方法はありますか?私も正しい質問をしていますか?