Я устанавливаю свойство IsEnabled элемента управления в зависимости от того, есть ли SelectedIndex> = 0 в ListBox. Я могу сделать это в приведенном ниже коде, но я хотел создать конвертер значений для этого поведения, поскольку я часто это делаю.
Я создал этот конвертер значений для обработки задачи и привязал его к свойству 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
}
Конвертер вызывается только один раз, когда приложение загружено. Не срабатывает при изменении SelectedIndex.
Поэтому у меня вопрос: что вызывает срабатывание преобразователя значений? Я предполагаю, что это происходит, когда изменяются связанные данные, поэтому есть ли способ заставить преобразователь сработать в других обстоятельствах? Я даже задаю правильный вопрос?