我正在尝试将自定义验证模板添加到我的数据网格文本列,但它似乎没有做任何事情。我正在使用此处找到的this模板。当我在不属于我的数据网格的控件上使用它时,它可以工作,但不适用于我的数据网格。 datagrid列绑定到Observable对象集合,如果输入无效,则对象属性的setter会抛出异常。
另外,如果我不使用任何validation.ErrorTemplate,当发生验证错误时,我没有得到红色边框,我只是在行上得到一个红色感叹号(“!”)。如果我忽略它并在我的窗口上单击确定它将带有验证错误的单元格绑定回我的集合为null,我该如何避免这样做?我在RowEditEnding事件中尝试了e.Cancel = true,但这也会停止整个验证过程。
这是我的xaml:
<DataGrid Grid.Row="1"
Grid.Column="0"
Margin="5"
AutoGenerateColumns="False"
CanUserAddRows="True"
CanUserDeleteRows="True"
ItemsSource="{Binding _employeeList}"
RowEditEnding="OnRowEdit">
<DataGrid.Columns>
<DataGridTextColumn Width="*"
Binding="{Binding Name}"
Header="Name" />
<DataGridTextColumn Width="130"
Binding="{Binding ID,
ValidatesOnExceptions=True,
ValidatesOnDataErrors=True}"
Header="ID"
Validation.ErrorTemplate="{StaticResource errorTemplateSilverlightStyle}" />
</DataGrid.Columns>
</DataGrid>