jes*_*582 4 wpf datagrid resize
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>
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
当列大小增加时,列宽会缩小以正确拟合,但在列大小减小时,列宽不会适当缩小以适应.在增加后,它不会减少ItemsSource更新上列的大小.希望有道理.任何帮助表示赞赏.谢谢.
抱歉,对我没有任何意义.
我理解代码,但这一部分:
当列大小增加时,列宽会缩小以正确拟合,但在列大小减小时,列宽不会适当缩小以适应.在增加后,它不会减少ItemsSource更新上列的大小
让我感到困惑
我这样理解:
如果列的内容宽度增加,则列的宽度会增加,但如果内容的宽度减小,则列的宽度不会增加.
是对的吗 ?
如果是这样,这种行为是正常的:如果需要,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;
Run Code Online (Sandbox Code Playgroud)
你可能需要一个dg.UpdateLayout()或两个在那里(更新后和设置回自动)
| 归档时间: |
|
| 查看次数: |
7258 次 |
| 最近记录: |