我在使用WPF方面相对比较新,想知道是否有人可以帮助我。
我有一个CollectionView,它持有一个ObservableCollection列表以储存我的所有项目。我的DataGrid的ItemsSource是这个CollectionView。在DataGrid的XAML中,我有一个简单的分组操作...
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold" Padding="3"/>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</DataGrid.GroupStyle>
现在,添加/删除项目是完全正常的,但是每当我更新/编辑项目时,分组就不会更新。假设项目按城市分组,如果在一个城市名“西雅图”下有3个项目,然后将其中一个城市名更改为“布鲁克林”,则“布鲁克林”城市仍然保持在西雅图组下,直到我重新填充observablecollection列表。
我的当前解决方法是...每当更改城市时,我都会清除和重新填充可观察集合列表,以便更新组...一定有更好的方法!
我的问题是,是否有任何方法可以在我更新/编辑项目时手动/动态更新datagrid组?
请注意,INotifyPropertyChanged我90%确定这里不是问题,我尝试了所有可能的组合与此接口,但每当我正在编辑/更新项目时,组都不会更新。但是,每当我添加一个项目时,如果它是一个新的城市,那么就会创建一个新的组,如果我删除了一个城市中的所有项目,该城市组也将被删除。而且不仅限于特定的项目,而是任何项目列。
编辑:好吧,仍然没有解决方案...但我发现了另一个解决方法,这仍然不是最优雅的。我为城市框放置了事件处理程序。因此,每当更改城市时,就会调用事件处理程序,并刷新collectionview。但是,每当我添加一个项目时就会调用该事件,当我单击该项目时也会调用该事件,并且在进行更改时每次都会调用两次,因此效率不高...仍在寻找想法。
非常感谢您的帮助,谢谢!