我有問題: 我在窗體(複選框,組合框,滑塊,文本框)上有一些控件。它們的值綁定到視圖模型的不同屬性。
當視圖模型的屬性具有特定值時,我想讓這些控件「固定」(顯示錯誤消息並將它們設置爲某個固定值(例如:當用戶未選中該複選框時試圖檢查它,滑塊設置爲一個特定的值,組合的選定項目是列表中的第二項) 我這樣做了這個(文本框的簡化示例): 在視圖中:使用MVVM模式強制驗證錯誤的視圖更新
<TextBox
Text="{Binding ViewModelProperty,
NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
/>
在視圖模型: 的屬性被定義如下:
String _ViewModelProperty;
public String ViewModelProperty
{
get
{
return _ViewModelProperty;
}
set
{
_ViewModelProperty = value;
OnPropertyChanged("ViewModelProperty");
}
}
和IDataErrorInfo的實施:
String IDataErrorInfo.this[String propertyName]
{
get
{
String error = null;
if (propertyName == "ViewModelProperty")
{
if (ViewModelProperty != "FixedValue")
{
error = DisplayMessage("You can only set a fixed value here");
ViewModelProperty= "FixedValue";
}
}
return error;
}
}
這非常適用的複選框,但對於所有其他控件,它的功能是這樣的:用戶設置了「錯誤」的值,則顯示錯誤信息然後,而不是用固定值更新控件,仍然顯示錯誤的值(它不再與視圖模型同步)。
我想不出如何強制更新控件的值。
預先感謝您。
爲什麼你允許用戶更改控件,如果它是固定的,它允許什麼? – Goblin 2010-07-18 12:34:22