编辑一个后,更新DataGrid行中的其他单元格

时间:2018-02-09 01:44:53

标签: c# .net wpf datagrid updatesourcetrigger

我有一个这样的课程:

public class Example
{
     public Example()
     {
     }

     public int Count1 { get; set; }

     public int Count2 { get; set; }

     public int Count3 { get { return Count1 + Count2 ; } }
}

一个DataGrid,其中List<Example>为ItemSource:

<DataGrid x:Name="grdExample" AutoGenerateColumns="False" CanUserAddRows="False" SelectionMode="Single" >
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Count1 , Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  Header="Count1" />
        <DataGridTextColumn Binding="{Binding Count1 , Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  Header="Count1" />

        <DataGridTextColumn Binding="{Binding Count2 , Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  Header="Count2" />
        <DataGridTextColumn Binding="{Binding Count3}"  Header="Count3" />

    </DataGrid.Columns>
</DataGrid>

我希望在编辑Count1或Count2列时,Count3也会更新。

使用此代码,只更改了第二列(即第一列相同的属性)。

我尝试在SelectedCellsChanged事件中刷新网格的项目。但是导致StackOverFlow,一旦事件在每次刷新时都不断变化。

我错过了什么?我正在寻找解决方案,但没有成功。

PS:Debbuging我可以看到grdExample.Items中的值是正确的

1 个答案:

答案 0 :(得分:0)

在模型类INotifyPropertyChanged中实施Example接口。每当在UI中更改值时,模型将获得通知,并且在模型类中,您可以在Count3&amp;时更新Count1值。 Count2更改。

此链接可以帮助您实现INotifyPropertyChanged界面:https://docs.microsoft.com/en-us/dotnet/framework/winforms/how-to-implement-the-inotifypropertychanged-interface