У меня есть несколько элементов управления, в том числе DataGrid, который я хочу отключить до тех пор, пока в первом TextBox в презентации не появится допустимое значение.Поэтому я добавил логическое свойство для привязки к виртуальной машине и привязки к нему в xaml (ниже).
Привязка работает, но имеет побочный эффект «захвата» пользователя в TextBox (MoneyToAllocate),
Предположительно, это связано с тем, что привязка к ТБ - это LostFocus, и фокусу нет места, чтобы запустить обновления.Какой хороший способ исправить это?
Ура,
Berryl
ViewModel
public bool HasMoneyToAllocate { get { return MoneyToAllocate.Amount > 0; } }
public Money MoneyToAllocate {
get { return _moneyToAllocate; }
set {
if (value.Amount < 0) return;
_moneyToAllocate = new Money(value.Amount, SelectedCurrency);
NotifyPropertyChanged(() => HasMoneyToAllocate);
}
}
View
<TextBox Text="{Binding MoneyToAllocate, Converter={StaticResource moneyConverter}}" />
<DataGrid IsEnabled="{Binding HasMoneyToAllocate}" ...
EDIT
Мне следовало добавить, что я пытался обновить PropertyChanged, но он становится немного грязным, поскольку конвертер должен отформатировать значение текстового поля.Любые другие идеи?
FINAL EDIT
Я закончил, позволяя другому элементу управления, который ранее не был остановкой табуляции, быть табуляцией, поэтому текстовое поле было куда идти.Фил лучше всего понял проблему и получил ответ, даже если диапазон значений, которые пользователь может ввести (от .001 до десятичного. Макс. Значение), делает нецелесообразным повышение.