【问题标题】:set max display width for a column in WPF datagrid为 WPF 数据网格中的列设置最大显示宽度
【发布时间】:2016-05-09 13:34:02
【问题描述】:

我在 WPF 中有一个自动生成列的数据网格。有些列的宽度超过整个屏幕,我想检查宽度,如果超过 500,则将其设置为 500,但如果小于 500,则保留当前宽度。

       <DataGrid x:Name="dgLM" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding}" HorizontalAlignment="Stretch" 
              Margin="5" VerticalAlignment="Stretch" IsReadOnly="True" CanUserAddRows="False" AutoGenerateColumns="True" CanUserDeleteRows="False"
              LoadingRow="dg_LoadingRow" AlternatingRowBackground="#FFDAD5D5" 
                AutoGeneratingColumn="dgMain_AutoGeneratingColumn" >
            <!--<DataGrid.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="DarkGray"/>
        </DataGrid.Resources>-->
            <DataGrid.Resources>
                <Style TargetType="{x:Type DataGridCell}">
                    <Style.Triggers>
                        <Trigger Property="DataGridCell.IsSelected" Value="True">
                            <Setter Property="Background" Value="DarkGray" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.Resources>
        </DataGrid>

代码是:

    private void dgMain_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        if (e.PropertyType == typeof(System.DateTime))
            (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy HH:mm:ss";

        //e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
        if (e.Column.Width > 500)
        {
            e.Column.Width = 500;
        }

    }

感谢任何帮助!

【问题讨论】:

  • 但是有什么问题呢?
  • 你不能使用:e.Column.Width > 500 因为'Width'的类型是DataGridLength

标签: wpf datagrid column-width autogeneratecolumn


【解决方案1】:

在处理 AutoGeneratingColumn 中的列宽时,您应该使用 DataGridLength。

您也可以将 e.Column.MaxWidth 改为 double。

【讨论】:

  • 感谢回复,问题是无法比较:e.Column.Width > 500
  • 是的,我说过你应该处理 DataGridLength。我的例子在比较部分是错误的。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 2012-11-27
  • 2011-11-01
  • 2018-08-11
  • 1970-01-01
  • 2018-01-09
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多