逻辑是双向绑定viewModel中的Textbox Text
,并根据viewModel中的Text
更改实现某些功能。
但是当删除所有文本时,会出现数据绑定错误,并且以下函数取决于Text
更改永远不会开始。 Text
绑定到int值。看起来当绑定失败imageQuantity = value
时,以下代码未被调用。任何想法如何解决这个问题?
public int ImageQuantity
{
get { return imageQuantity; }
set
{
imageQuantity = value;
if (ImageQuantity > 0)
{
if (!String.IsNullOrEmpty(LastSymbol))
{
ImageAmount = ImageQuantity * (QQ.Ask + QQ.Bid) * 0.5;
}
OnPropertyChanged(() => this.ImageQuantity);
}
else
{
ImageAmount = 0.0;
}
}
编辑:解决此问题的一种方法是返回使用prism实现TextChanged
事件命令。
答案 0 :(得分:1)
当用户删除数据绑定ImageQuantity
中的所有文本时,将不会调用您的TextBox
属性设置器,因为您的ImageQuantity
属性为int
且为空string
无法转换为int
。有一个简单的解决方案来解决这个问题。
如果您需要在设置器中调用代码,即使输入无效(例如空string
),您也可以将ImageQuantity
属性更改为string
并执行此操作您自己在属性设置器中转换为int
(显然使用try
检查):
public string ImageQuantity
{
get { return imageQuantity; }
set
{
int intValue = 0;
if (int.TryParse(value, out intValue))
{
// value is a valid integer
imageQuantity = value;
if (!String.IsNullOrEmpty(LastSymbol))
{
ImageAmount = ImageQuantity * (QQ.Ask + QQ.Bid) * 0.5;
}
OnPropertyChanged(() => this.ImageQuantity);
}
else // value is a NOT a valid integer
{
ImageAmount = 0.0;
}
}
}