我正在尝试在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}"
有什么想法吗?
答案 0 :(得分:1)
您的ViewModel应该实现IDataErrorInfo
并使用该接口来定义验证规则
热门google链接返回this site,其中显示了如何实施该链接的简单示例。