C# wpf Datagrid:验证错误未清除

C# wpf Datagrid:验证错误未清除,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个datagrid,其中有一列名为ProductName,当此单元格文本发生更改时,我会使用单元格值筛选一些产品来填充listview,因此,用户可以从listview中选择一个项目,并将所选产品映射到单元格。我使用IDataErrorInfo在数据库表中验证所选产品。但目前的问题是,当用户从listview中选择一个有效产品时,我设置了UpdateSourceTrigger=LostFocus,数据网格仍然显示验证错误## 我的xaml是: <my:DataGrid Name="

我有一个datagrid,其中有一列名为ProductName,当此单元格文本发生更改时,我会使用单元格值筛选一些产品来填充listview,因此,用户可以从listview中选择一个项目,并将所选产品映射到单元格。我使用IDataErrorInfo在数据库表中验证所选产品。但目前的问题是,当用户从listview中选择一个有效产品时,我设置了UpdateSourceTrigger=LostFocus,数据网格仍然显示验证错误## 我的xaml是:

 <my:DataGrid Name="dgReceiveInventory"  ItemsSource="{Binding}"   SelectionUnit="Cell"   AutoGenerateColumns="False" Margin="12,84,10,52"  BeginningEdit="dgReceiveInventory_BeginningEdit">
        <my:DataGrid.RowValidationRules>
            <local:RowDataInfoValidationRule ValidationStep="UpdatedValue" />
        </my:DataGrid.RowValidationRules>
        <my:DataGrid.Columns>

            <!--0-Product Column-->
            <my:DataGridTemplateColumn Header="Product Name" Width="200">
                <my:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding ProductName}"  ></TextBlock>
                        <!--<TextBlock >
                          <TextBlock.Text>
                            <Binding Path="ProductName" >

                               </Binding>
                            </TextBlock.Text>
                        </TextBlock>-->
                    </DataTemplate>
                </my:DataGridTemplateColumn.CellTemplate>
                <my:DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <TextBox x:Name="txtbxProduct"  Text="{Binding Path=ProductName,Mode=TwoWay,ValidatesOnDataErrors=True}" Style="{StaticResource TextBoxInError}"  TextChanged="txtbxProduct_TextChanged" PreviewKeyDown="txtbxProduct_PreviewKeyDown" >
                                    </TextBox>
                    </DataTemplate>
                </my:DataGridTemplateColumn.CellEditingTemplate>
            </my:DataGridTemplateColumn>
        </my:DataGrid.Columns>
    </my:DataGrid>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Product_Name}" Header="Product" Width="200" />

            </GridView>
        </ListView.View>
    </ListView>
将数据包映射到datagrid的My listview事件:

                <GridViewColumn DisplayMemberBinding="{Binding Path=Product_Name}" Header="Product" Width="200" />

            </GridView>
        </ListView.View>
    </ListView>
 private void lstvwProduct_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (lstvwProduct.SelectedItem != null)
        {
            int index = DataGridHelper.GetRowIndexOfSelectedCell(dgReceiveInventory);
            if (index == -1 || index == dgReceiveInventory.Items.Count - 1)
                return;
            DataRowView drow = (DataRowView)lstvwProduct.SelectedItem;

            lsItems[index].ProductName = drow.Row["Product_Name"].ToString();

            lstvwProduct.Visibility = Visibility.Collapsed;
        }
    }