處理RelayCommand我有一個屬性,它看起來像這樣:int屬性在MVVM
private int _wertungvalue;
public int WertungValue
{
get { return _wertungvalue; }
set
{
_wertungvalue = value;
RaisePropertyChanged(() => WertungValue);
}
}
它綁定到一個TextBox
<TextBox Text="{Binding WertungValue, Mode=TwoWay}"/>
因此,用戶可以輸入任何他想要的(我不你想要一個數字文本框!)。用戶鍵入'5',WertungValue的值爲5.如果用戶鍵入'Test',則會彈出一個紅色邊框,並且WertungValue的值仍然是5!
現在我也有一個RelayCommand
RelayCommand(DeleteExecute,CanDelete);
在CanDelete,我檢查,如果屬性爲一個int
private bool CanDelete()
{
int ot = 0;
if (int.TryParse(WertungValue.ToString(),out ot) == false)
return false;
else
return true;
}
使得RelayCommand應只工作,當該值是一個整數。所以這意味着當用戶鍵入'Test'時,RelayCommand應該返回false。問題是它永遠不會返回false,因爲該屬性的值始終是一個整數,但在View中它是一個字符串。
我不想讓屬性鍵入字符串或在我的TextBox中使用UpdateSourceTrigger = PropertyChanged。我也不想僅僅創建一個數字TextBox ...用戶應該被允許輸入他想要的任何東西,但是RelayCommand只能在他輸入一個整數時才起作用。
你不能做你想做的。你會得到一個綁定錯誤,你的「設置」永遠不會被你的財產調用。將「UpdateSourceTrigger」設置爲「PropertyChanged」不會解決問題。你不需要讓你的單個屬性成爲一個字符串......但是你應該添加第二個屬性來綁定你的文本框。 – Thelonias