C# WPF数据绑定有一些问题,但您必须猜测是哪种类型的

C# WPF数据绑定有一些问题,但您必须猜测是哪种类型的,c#,wpf,data-binding,propertychanged,C#,Wpf,Data Binding,Propertychanged,我正试图在我的wpf项目中实现一个属性更改事件(或任何合适的事件),并且我正试图找到实现这一点的最佳方法 我有这个标题,其中有一个展开/折叠图标,在我的窗口中,我可能有多个标题。当所有标题都列在开头时,我希望默认值被折叠,但当用户展开某些标题(不是全部)时,当我在窗口上单击“刷新”以更新标题时,我希望它保持刷新前的状态 因此,如果标题1和2被展开,而标题3和标题4被折叠,当按下刷新按钮时,我希望它能真正记住这一点。问题是,当我单击“刷新”时,它会刷新整个视图,从而丢失信息 我试图在实际类中拥有一

我正试图在我的wpf项目中实现一个属性更改事件(或任何合适的事件),并且我正试图找到实现这一点的最佳方法

我有这个标题,其中有一个展开/折叠图标,在我的窗口中,我可能有多个标题。当所有标题都列在开头时,我希望默认值被折叠,但当用户展开某些标题(不是全部)时,当我在窗口上单击“刷新”以更新标题时,我希望它保持刷新前的状态

因此,如果标题1和2被展开,而标题3和标题4被折叠,当按下刷新按钮时,我希望它能真正记住这一点。问题是,当我单击“刷新”时,它会刷新整个视图,从而丢失信息


我试图在实际类中拥有一个集合,该集合承载这些标头以存储信息,因此当标头展开或折叠时,它将通知集合已触发展开/折叠,并且我希望在集合中更新该值,因此当单击刷新按钮时,我可以将其与GUID进行比较,如果刷新前视图中已存在标头,则使用存储的展开/折叠信息更新新标头,这样即使在刷新后,它也将保持其状态。

对于绑定到的类的各个实例,您希望实现INotifyPropertyChanged接口

此外,在存储标头的集合上,您还需要实现INotifyCollectionChanged接口,以指示集合本身何时更改


如果正确实现这两个接口,则WPF数据绑定系统应能够正确绑定对象(及其所在的集合)。

对于绑定到的类的各个实例,您希望实现INotifyPropertyChanged接口

此外,在存储标头的集合上,您还需要实现INotifyCollectionChanged接口,以指示集合本身何时更改


如果正确实现这两个接口,WPF数据绑定系统将能够正确绑定您的对象(以及它们所在的集合)。

有关INotifyCollectionChanged的信息,请查看ObservableCollectionHey casperOne,非常感谢您的快速回复。我一直在想,当我拥有的布尔属性甚至不在.xaml中时,是否可以使用INotifyPropertyChanged接口?用户单击“[+]”展开,图标变为“[-]”折叠,当标题展开时,我尝试将“IsExpanded”属性设置为TRUE,每次此属性更改时,我都要通知承载标题的类(不通知任何视图)。谢谢大家!@可以,但是如果它不在XAML中,那么就不能绑定到该值。这还意味着您的设计有点不干净,因为您没有公开此属性(并且您应该将其与标题所针对的数据分开公开)。对于INotifyCollectionChanged,请查看ObservableCollectionHey casperOne,非常感谢您的快速回复。我一直在想,当我拥有的布尔属性甚至不在.xaml中时,是否可以使用INotifyPropertyChanged接口?用户单击“[+]”展开,图标变为“[-]”折叠,当标题展开时,我尝试将“IsExpanded”属性设置为TRUE,每次此属性更改时,我都要通知承载标题的类(不通知任何视图)。谢谢大家!@可以,但是如果它不在XAML中,那么就不能绑定到该值。这还意味着您的设计有点不干净,因为您没有公开此属性(并且您应该将其与标头的数据分开公开)。