我正在尝试创建一个绑定组,根据数据网格中的3个文本框计算行是否有效。
我创建了一个ValidationRule类,然后在我的数据网格中我有:
<DataGrid.BindingGroup>
<BindingGroup Name="RowBindingGroup">
<BindingGroup.ValidationRules>
<util:MinMaxParValidationRule ValidationStep="CommittedValue" />
</BindingGroup.ValidationRules>
</BindingGroup>
</DataGrid.BindingGroup>
和
<TextBox.Text>
<Binding Path="ParStockLevel" UpdateSourceTrigger="PropertyChanged" BindingGroupName="RowBindingGroup" />
</TextBox.Text>
我的验证规则类看起来像
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
ValidationResult result = ValidationResult.ValidResult;
BindingGroup bindingGroup = (BindingGroup)value;
StockInformationDVM row = (StockInformationDVM)bindingGroup.Items[0];
现在,当我运行应用程序时,验证规则类中的值始终是我的datagrid中的第一行,而不是正在验证的行(除非您正在验证第一行!)
我之前没有这样做,我发现的示例不使用MVVM,因此可能存在问题。
答案 0 :(得分:1)
尝试将绑定组指定为DataGrid.ItemBindingGroup
而不是DataGrid.BindingGroup
:
<DataGrid.ItemBindingGroup>
<BindingGroup>
<BindingGroup.ValidationRules>
<util:MinMaxParValidationRule ValidationStep="CommittedValue" />
</BindingGroup.ValidationRules>
</BindingGroup>
</DataGrid.ItemBindingGroup>
在这种情况下,您实际上可以省略指定绑定组的名称。它将自动用于连续的所有绑定。