如何处理TextBox的双向绑定错误?

时间:2014-12-21 22:10:36

标签: wpf binding

逻辑是双向绑定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事件命令。

1 个答案:

答案 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;
        }  
    }
}