我有一个看起来像这样的属性:
private int _wertungvalue;
public int WertungValue
{
get { return _wertungvalue; }
set
{
_wertungvalue = value;
RaisePropertyChanged(() => WertungValue);
}
}
它绑定到一个文本框
<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,因为属性的值总是一个整数,但在视图中它是一个字符串。
我不想让属性输入字符串或在我的 TextBox 中使用 UpdateSourceTrigger=PropertyChanged。我也不想只制作一个数字文本框...应该允许用户输入他想要的任何内容,但是 RelayCommand 应该只在他输入整数时才起作用。