gpt4 book ai didi

wpf - 如何关闭(带有复选框)使用 CollectionViewSource 实现的 WPF/MVVM DataGrid 分组?

转载 作者:行者123 更新时间:2023-12-03 10:17:37 25 4
gpt4 key购买 nike

我有数据网格分组的工作实现。下面是我所做的(省略了扩展器的 GroupStyle):

<CollectionViewSource x:Key="SelectedObjectsViewSource" Source="{Binding SelectedObjectItems}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="TableId"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>


<DataGrid Name="SelectedObjectsGrid"
ItemsSource="{Binding Source={StaticResource SelectedObjectsViewSource}}"
SelectionMode="Extended"
CanUserAddRows="False"
AutoGenerateColumns="False">

我想添加一个用户可以关闭/打开分组的复选框。但是我不知道如何在 MVVM 中实现它

最佳答案

我建议您将复选框绑定(bind)到 viewmodel 的 bool 属性,其中它的 setter 还根据指定值设置 collectionview 的分组状态。如以下示例所示:绑定(bind)到复选框状态的 bool 属性是 GroupView,绑定(bind)到数据网格的集合是 View。

C# View 模型

class ViewModel : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}

private ICollectionView _View;
public ICollectionView View
{
get
{
return _View;
}
set
{
_View = View;
NotifyPropertyChanged("View");
}
}

private bool _GroupView;
public bool GroupView
{
get
{
return _GroupView;
}
set
{
if (value != _GroupView)
{
// Clear Grouping status of the view
View.GroupDescriptions.Clear();
if (value)
{
// If true set Grouping status
View.GroupDescriptions.Add(new PropertyGroupDescription("TableId"));
}
_GroupView = value;
NotifyPropertyChanged("GroupView");

// Notify the UI that also the View changed in order to redraw the datagrid with or without grouping
NotifyPropertyChanged("View");
}
}
}
}

C# 代码隐藏

public partial class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
ViewModel myViewModel = new ViewModel();
myViewModel.View = .....;
DataContext = myViewModel;

}
}

XAML

<StackPanel>
<CheckBox IsChecked="{Binding GroupView, Mode=TwoWay}"/>
<DataGrid Name="SelectedObjectsGrid"
ItemsSource="{Binding View, Mode=TwoWay}"
SelectionMode="Extended"
CanUserAddRows="False"
AutoGenerateColumns="False"/>
</StackPanel>

关于wpf - 如何关闭(带有复选框)使用 CollectionViewSource 实现的 WPF/MVVM DataGrid 分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253820/

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