C# EF模型项资源更新后的部分树视图刷新
我有一个实体框架模型和与模型绑定的TreeView 在构造函数中:C# EF模型项资源更新后的部分树视图刷新,c#,wpf,treeview,refresh,C#,Wpf,Treeview,Refresh,我有一个实体框架模型和与模型绑定的TreeView 在构造函数中: Context.TestCategory.Load(); 我的树视图: ........................................ 其他项目 ........................................ 更新ItemsSource中的项目后,我需要更新相关的TreeView分支,最好的方法是什么 我不确定直接将ItemsSource绑定到上下文属性是一件很好的事情 绑定应该做的是绑
Context.TestCategory.Load();
我的树视图:
........................................
其他项目
........................................
更新ItemsSource中的项目后,我需要更新相关的TreeView分支,最好的方法是什么 我不确定直接将
ItemsSource
绑定到上下文属性是一件很好的事情
绑定应该做的是绑定到一个属性,该属性在发生更改时可以执行RaisePropertyChanged
,然后UI元素将根据需要进行更新。我使用MVVM,因此我的绑定都来自ViewModel,它是视图的datacontext,并且实现了INotifyPropertyChanged
接口。然后,我的属性设置器可以如下所示:
private List<TestCategories>_myItemSourceList;
public List<TestCategories> MyItemSourceList
{
get { return _myItemSourceList; }
set
{
if (value != _myItemSourceList)
{
_myItemSourceList= value;
RaisePropertyChanged(() => MyItemSourceList);
}
}
}
私有列表\u myItemSourceList;
公共列表MyItemSourceList
{
获取{return\u myItemSourceList;}
设置
{
如果(值!=\u myItemSourceList)
{
_myItemSourceList=值;
RaisePropertyChanged(()=>MyItemSourceList);
}
}
}
XAML看起来像
<TreeView x:Name="DbTree" ItemsSource="{Binding MyItemSourceList}">
显然,由于您没有使用MVVM,您的代码将略有不同,但原则仍然是:将ItemSource
绑定到可以RaisePropertyChanged
的属性
编辑:My RaisePropertyChanged在Prism框架内,因此使用lambda,但“standard”使用的字符串如下所示RaisePropertyChanged(“MyItemSourceList”)