WPF DataGrid中的验证无效

时间:2011-07-22 11:22:36

标签: wpf validation mvvm datagrid caliburn.micro

我正在尝试在DataGrid中验证的ViewModel上获取属性,但我遇到了问题。

我的XAML代码如下所示:

<DataGrid x:Name="Items">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Quantity}" Header="Quantity" />
    </DataGrid.Columns>
</DataGrid>

Items-collection中的ViewModel对象(基于Caliburn.Micro Screen-class)具有如下属性:

public int Quantity
{
    get { return Section.Quantity; }
    set { Section.Quantity = value; }
}

这很棒!如果我在数量应该在单元格中输入“abc”,则在文本框周围绘制一条红线以表示错误。

但是我希望能够操纵数量值,所以我想改用这个代码:

public string Quantity
{
    get { return string.Format("{0} pcs.", Section.Quantity); }
    set
    {
        var quantityAsText = value.Replace("pcs.", string.Empty).Trim();

        int quantity;
        if (int.TryParse(quantityAsText, out quantity))
        {
            Section.Quantity = quantity;
            NotifyOfPropertyChange(() => Quantity);
        }
        else
        {
            throw new FormatException("Quantity must be a number!");
        }
    }
}

然而,这不起作用。从未捕获到FormatException,我的应用程序崩溃......

我尝试修改绑定到此而没有任何正面结果:

Binding="{Binding Quantity, Mode=TwoWay, ValidatesOnExceptions=True}"

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的ViewModel应该实现IDataErrorInfo并使用该接口来定义验证规则

热门google链接返回this site,其中显示了如何实施该链接的简单示例。