gpt4 book ai didi

wpf - DataGrid-Column 宽度不会在 ItemsSource 更改时更新

转载 作者:行者123 更新时间:2023-12-04 22:36:54 25 4
gpt4 key购买 nike

XAML:

<DataGrid.Columns>
<DataGridTextColumn x:Name="colDisplayName" Width="Auto" IsReadOnly="True" Header="Name" Binding="{Binding ssn.SSN_DISPLAY_NAME}"></DataGridTextColumn>
<DataGridTextColumn x:Name="colValue" Width="Auto" Header="Value" Binding="{Binding ssv.SSV_VALUE}" CellStyle="{StaticResource SingleClickEditing}"></DataGridTextColumn>
<DataGridTextColumn x:Name="colDescription" Width="Auto" IsReadOnly="True" Header="Description" Binding="{Binding ssn.SSN_DESCRIPTION}"></DataGridTextColumn>
<DataGridTextColumn x:Name="colUnit" Width="Auto" IsReadOnly="True" Header="Unit Abbreviation" Binding="{Binding ssn.UNIT_TYPE.UNIT_NAME.UN_ABBREVIATION}"></DataGridTextColumn>
</DataGrid.Columns>

CS:
private void tvSystemConfiguration_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
dgSystemSettings.ItemsSource =
((tvSystemConfiguration.SelectedItem as SYSTEM_SETTINGS_GROUP).SYSTEM_SETTINGS_NAMEs.Join
(ssdc.SYSTEM_SETTINGS_VALUEs, x => x.SSN_ID, y => y.SSV_SSN_ID, (x, y) => new DataGridItem{ ssn = x, ssv = y })).ToList();
}

当增加列大小时,列宽会收缩以正确适应,但在减少列大小时不会正确收缩以适应。在 ItemsSource 更新后,它不会减小列的大小。希望这是有道理的。任何帮助表示赞赏。谢谢你。

最佳答案

对我没有任何意义,抱歉。

我理解代码,但这部分:

Column widths shrink to fit correctly when increasing in column size but do not properly shrink to fit when decreasing in column size. It will not decrase the size of the column on an ItemsSource update after it has increased



让我困惑

我是这样理解的:

if the width of a column's content increases, the column's width increases, but if the content's width decreases, the column's width does not.



是对的吗 ?

如果是这样,这种行为是正常的:如果需要,Wpf 只会将数据网格的列宽调整为自动,即:内容无法完全显示。因此,当内容的宽度缩小时,列不会调整大小,因为内容仍然可以完整地看到。

我可以看到强制 wpf 重新计算列的宽度的唯一方法是将它们全部强制为 0,然后在后面的代码中返回 auto,并加入一两个 updateLayout(),但这不是很好的编程:-/

编辑:
基本上,在你后面的代码中:
foreach (DataGridColumn c in dg.Columns)
c.Width = 0;

// Update your DG's source here

foreach (DataGridColumn c in dg.Columns)
c.Width = DataGridLength.Auto;

你可能需要一个 dg.UpdateLayout() 或两个在那里的地方(在更新和设置回自动之后)

关于wpf - DataGrid-Column 宽度不会在 ItemsSource 更改时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725724/

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