Kob*_*ari 1 wpf virtualization grouping datagrid
WPFDataGrid有一个属性允许虚拟化与分组一起使用:VirtualizationPanel.IsVirtualizingWhenGrouping="True"。当我将其设置为 True 时,我注意到当整个数据网格宽度发生变化时,具有星形大小的列不再调整大小。
要重建,请创建一个新的 WPF 应用程序,并在 MainWindow.xaml 中设置以下代码:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d">
<Grid>
<DataGrid x:Name="grid"
CanUserResizeColumns="False"
AutoGenerateColumns="False"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
>
<DataGrid.GroupStyle>
<GroupStyle/>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTextColumn Width="100" Header="1" Binding="{Binding .}">
</DataGridTextColumn>
<DataGridTextColumn Width="*" Header="2" Binding="{Binding .}">
</DataGridTextColumn>
<DataGridTextColumn Width="100" Header="3" Binding="{Binding .}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs 中的以下内容:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var csv = new CollectionViewSource();
csv.Source = new List<string>
{
"John",
"Paul",
"George",
"Ringo",
"John",
"Paul",
"George",
"Ringo",
};
csv.GroupDescriptions.Add(new PropertyGroupDescription("."));
grid.ItemsSource = csv.View;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,当您调整窗口大小时,中间列的大小不会调整。但如果你设置VirtualizationPAnel.IsVirtualizingWhenGrouping="False"调整大小将按预期工作
小智 5
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</DataGrid.GroupStyle>
Run Code Online (Sandbox Code Playgroud)
会解决你的问题。
| 归档时间: |
|
| 查看次数: |
694 次 |
| 最近记录: |