我有幾個控件,包括我想禁用的DataGrid,直到在演示文稿的第一個TextBox中有一個有效值。所以我添加了一個綁定到VM中的布爾屬性,並在xaml(下面)中綁定到它。數據綁定和焦點協調
該綁定工作,但具有「陷印」在TextBox(MoneyToAllocate)中的用戶的副作用。
大概這是因爲TB綁定是LostFocus,並且沒有地方讓焦點去實際觸發更新。什麼是解決這個問題的好方法?
乾杯,
Berryl
視圖模型
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);
}
}
查看
<TextBox Text="{Binding MoneyToAllocate, Converter={StaticResource moneyConverter}}" />
<DataGrid IsEnabled="{Binding HasMoneyToAllocate}" ...
編輯
我應該補充說,我試過的PropertyChanged的更新,但它變得有點亂自文本框的值需要由轉換器格式化。任何其他想法?
最後編輯
我結束了,讓以前不是一個製表位是製表另一個控制,所以在文本框中有一個地方去。儘管用戶可以輸入的值的範圍(.001到decimal.MaxValue)使得上下不切實際,但Phil最好地理解了問題並得到了答案。
請參閱編輯。 – Berryl 2012-03-23 22:44:06
如何使用DecimalUpDown控件,如來自擴展WPF工具箱的內容?強制在該控件中始終有一個有效的數字,並在其大於0時啓用其餘的用戶界面。 – Phil 2012-03-23 22:55:23