我有一個基于客戶名稱分組的 DataGrid,它可以作業。
<GroupBox Header="{Binding ElementName=MainWindow, Path=ocS3FileListCount}" ContentStringFormat="" Name="grpRemote" Margin="5,0,0,0" Grid.Column="1" Grid.Row="2">
<GroupBox.Resources>
<CollectionViewSource x:Key="S3List" Source="{Binding ElementName=MainWindow, Path=ocS3FileList}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="CustomerName"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</GroupBox.Resources>
<DataGrid x:Name="dgS3List" Margin="0,0,0,0" ItemsSource="{Binding Source={StaticResource S3List}}" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Label Content="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="File Name" Width="*" Binding="{Binding Path=FileName}" IsReadOnly="True" />
<DataGridTextColumn Header="Received" Width="100" Binding="{Binding Path=JobReceived,StringFormat=d}" IsReadOnly="True" Stylus.IsPressAndHoldEnabled="True" />
<DataGridTextColumn Header="Date" Width="100" Binding="{Binding Path=JobDate,StringFormat=d}" IsReadOnly="True" Stylus.IsPressAndHoldEnabled="True" />
</DataGrid.Columns>
</DataGrid>
</GroupBox>
我確實有一些用戶希望選擇為不同用途打開和關閉分組。我之前根據不同控制元件的狀態使用過條件樣式,但是是否可以使用條件 GroupStyle?
基于工具列復選框啟用它似乎是一個很好的解決方案:
<CheckBox x:Name="chkGroupSwitch" IsChecked="True">Enable Grouping</CheckBox>
uj5u.com熱心網友回復:
我不知道有什么方法可以讓您的 GroupStyle 樣式在 XAML 中成為條件,但由于 GroupStyle 僅適用于您的 ViewSource 中有 GroupDescription 時,我將使用不同的方法:
C# 中的解決方案很簡單。您所要做的就是在復選框的狀態發生變化時添加/洗掉 ViewSource 的 PropertyGroupDescription。
例如。
private void ToggleGroupingEnabled(bool mode)
{
CollectionViewSource viewSource = grpRemote.Resources["MyViewSourceName"] as CollectionViewSource;
viewSource.GroupDescriptions.Clear();
if (mode)
{
var groupDesc = new PropertyGroupDescription("CustomerName");
viewSource.GroupDescriptions.Add(groupDesc);
}
}
假設您的 ViewSource 有一個名稱:
<CollectionViewSource x:Key="S3List" x:Name="MyViewSourceName" Source="{Binding ElementName=MainWindow, Path=ocS3FileList}">
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349821.html
上一篇:無法設定WPFGridColumnHeader背景屬性
下一篇:資料庫更新時更新串列視圖
