在编辑一个 DataGrid 行后更新其他单元格
Update others cells in a DataGrid row after editing one
我有一个 class 这样的:
public class Example
{
public Example()
{
}
public int Count1 { get; set; }
public int Count2 { get; set; }
public int Count3 { get { return Count1 + Count2 ; } }
}
以及带有 List<Example>
作为 ItemSource 的 DataGrid:
<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 事件中刷新网格的项目。但是会导致 Whosebug,一旦事件在每次刷新时不断变化。
我错过了什么?我正在寻找解决方案,但没有成功。
PS:调试中我可以看到 grdExample.Items
中的值是正确的
在您的模型中实现 INotifyPropertyChanged
接口 class Example
。每当 UI 中的值更改时,模型都会收到通知,并且在您的模型 class 中,您可以在 Count1
和 Count2
更改时更新 Count3
值。
这个link可以帮助你实现INotifyPropertyChanged
接口:https://docs.microsoft.com/en-us/dotnet/framework/winforms/how-to-implement-the-inotifypropertychanged-interface
我有一个 class 这样的:
public class Example
{
public Example()
{
}
public int Count1 { get; set; }
public int Count2 { get; set; }
public int Count3 { get { return Count1 + Count2 ; } }
}
以及带有 List<Example>
作为 ItemSource 的 DataGrid:
<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 事件中刷新网格的项目。但是会导致 Whosebug,一旦事件在每次刷新时不断变化。
我错过了什么?我正在寻找解决方案,但没有成功。
PS:调试中我可以看到 grdExample.Items
中的值是正确的在您的模型中实现 INotifyPropertyChanged
接口 class Example
。每当 UI 中的值更改时,模型都会收到通知,并且在您的模型 class 中,您可以在 Count1
和 Count2
更改时更新 Count3
值。
这个link可以帮助你实现INotifyPropertyChanged
接口:https://docs.microsoft.com/en-us/dotnet/framework/winforms/how-to-implement-the-inotifypropertychanged-interface