gpt4 book ai didi

c# - 具有可观察的收集项详细信息的更改的模型,而不更新WPF MVVM中的DataGrid View

转载 作者:行者123 更新时间:2023-12-03 10:26:48 24 4
gpt4 key购买 nike

我有一个选定的树 View 项目,该项目具有一个ObservableCollection of models(employee)模型,并且当从tree选择一个项目/雇员时,我正在显示员工详细信息,例如id(textblock),name(textblock)和促销详细信息(在DataGrid是另一个名为“PromotionHistory”的模型的可观察集合,它可以正确显示详细信息。

<TreeView x:Name="EmployeesDataTree" ItemsSource="{Binding Employees}"/>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding ElementName=EmployeesDataTree, Path=SelectedItem.EmployeePromotionDetails}">
<DataGrid.Columns>
<DataGridTextColumn Header="Employee Promotion Id" Binding="{Binding Name}" />
<DataGridTextColumn Header="Employee NewTitle" Binding="{Binding NewTitle}" />
<DataGridTextColumn Header="Employee Location " Binding="{Binding Location}" />
....
</DataGrid.Columns>
</DataGrid>

当我通过代码更改 View 模型中PromotionHistory数据网格中的“位置名称”单元格值时,单击按钮(“UpdateLocation”)后,尽管我的可观察收集项详细信息已成功更新,但更改未反射(reflect)回UI。
foreach (var item in (SelectedEmployeeItem as EmployeeModel).EmployeePromotionDetails)
{
// condition which hits service and verify if the location name is up to date by searching with id and updates.
if(condition)
{
item.Name = "New Location";
}
}

在对该站点进行了一些研究之后,我发现我的问题是ObservableCollection本身(例如添加/删除项目)没有改变,而只是更改了该集合中的项目。但是我无法使用更改更新用户界面/ View 。

最佳答案

如果您的item是类PromotionHistory的类型,则您的类需要实现以下内容:

public class PromotionHistory : INotifyPropertyChanged
{
private string _name;

public string Name {
get { return _name; }
set {
_name = value;
OnPropertyChanged();
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
PropertyChanged事件正在更新您的UI。 ObservableCollection仅在通过 CollectionChanged事件添加或删除项目时有效,该事件与更改的项目属性无关。

关于c# - 具有可观察的收集项详细信息的更改的模型,而不更新WPF MVVM中的DataGrid View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com