在我的WPF应用程序中,使用MVVM Light,我使用DataGrid
来显示特定对象集合中的数据。
根据要求,我在第一个列表中分隔了标题,在另一个列表中分隔了完整的对象集合。
在阅读了大量教程,帖子,博客后......似乎必须将ErrorDataInfo
放在ViewModel中来管理模型属性错误。
在这里,尝试一下,我想在代码中看到一个非常基本的错误。
应用程序进程是用户选择csv文件,此文件将转换为我的对象集合,然后显示在DataGrid
中。此时应显示错误状态的单元格(以及工具提示中的错误消息)。
我尝试了很多东西,但我的DataGrid
仍然没有显示错误的单元格。
这是我的ViewModel代码:
public class ImportViewModel : ViewModelBase, IDataErrorInfo
{
#region Validation
public string Error
{
get
{
return string.Empty;
}
}
public string this[string columnName]
{
get
{
string result = null;
if (null != ListOfObjects)
{
if (_imp.ListOfHeaders.Where(x => x.Name == "EAN Code")
.ToString() == columnName)
if (ListOfObjects.Select(x => x.ean_cod).Single().Length > 3)
result = "Code must not be more than 3 digits";
}
return result;
}
}
我的View xaml代码
<DataGrid Grid.Row="1"
AutoGenerateColumns="True"
ItemsSource="{Binding ListOfObjects,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True,
NotifyOnValidationError=True}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
感谢您的帮助。