XAML绑定组

时间:2011-03-02 17:17:05

标签: c# wpf validation xaml data-binding

我正在尝试创建一个绑定组,根据数据网格中的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,因此可能存在问题。

1 个答案:

答案 0 :(得分:1)

尝试将绑定组指定为DataGrid.ItemBindingGroup而不是DataGrid.BindingGroup

<DataGrid.ItemBindingGroup>
   <BindingGroup>
      <BindingGroup.ValidationRules>
         <util:MinMaxParValidationRule ValidationStep="CommittedValue" />
      </BindingGroup.ValidationRules>
   </BindingGroup>
</DataGrid.ItemBindingGroup>

在这种情况下,您实际上可以省略指定绑定组的名称。它将自动用于连续的所有绑定。