【问题标题】:WPF Datagrid Column width Resize when maximizeWPF Datagrid列宽最大化时调整大小
【发布时间】:2015-10-24 06:14:42
【问题描述】:

我在网格列中添加了 WPF 数据网格,这里是 XAML

<DataGrid x:Name="grdProgramList" IsReadOnly="True" 
          Grid.Column="1" Grid.Row="1" 
          Width="{Binding Path=ActualWidth, ElementName=grid}"
          RenderOptions.ClearTypeHint="Enabled"
          TextOptions.TextFormattingMode="Display"
          HeadersVisibility="All"
          Margin="5"
          SelectionMode="Single"
          SelectionUnit="FullRow"
          SelectionChanged="AzureDataGrid_Selected"
          ItemsSource="{Binding Path=Uninstaller.ProgramCollection}"
          SelectedItem="{Binding Uninstaller.SelectedProgramDetails,  Mode=TwoWay}"
          AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="PROGRAM NAME" 
                            Binding="{Binding ProgramDetails.ProgramName}" 
                            MinWidth="325" />
        <DataGridTextColumn Header="Publisher"
                            Binding="{Binding ProgramDetails.PublisherName}" />
        <DataGridTextColumn Header="Estimated Size (KB)"
                            Binding="{Binding ProgramDetails.EstimatedSize}" />
        <DataGridTextColumn Header="Version"
                            Binding="{Binding ProgramDetails.Version}" />
    </DataGrid.Columns>
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/>
            <Style.Triggers>
                <!-- IsSelected -->
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Self}}" Value="true" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="#CC119EDA" />
                    <Setter Property="Foreground" Value="White" />
                    <Setter Property="BorderBrush" Value="#CC119EDA" />
                </MultiDataTrigger>
                <!-- IsHover -->
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="#66119EDA" />
                    <Setter Property="BorderBrush" Value="#66119EDA" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

当它重新调整大小时,我希望所有列的宽度都适合网格宽度

现在看起来像这样。

【问题讨论】:

    标签: c# wpf xaml datagrid


    【解决方案1】:

    您应该设置DataGridColumnWidth 属性。它是DataGridLength 类型,允许您按比例设置值。
    为此,您可以将值设置为 number,后跟 *(例如,2** 默认为 1*)。
    如果您希望每个column 具有相同的width,请将其设置为*

    <DataGrid.Columns>
        <DataGridTextColumn Header="PROGRAM NAME" 
                            Binding="{Binding ProgramDetails.ProgramName}" 
                            MinWidth="325" Width="*" />
        <DataGridTextColumn Header="Publisher"
                            Binding="{Binding ProgramDetails.PublisherName}" Width="*" />
        <DataGridTextColumn Header="Estimated Size (KB)"
                            Binding="{Binding ProgramDetails.EstimatedSize}"  Width="*"/>
        <DataGridTextColumn Header="Version"
                            Binding="{Binding ProgramDetails.Version}" Width="*" />
    </DataGrid.Columns>
    

    如果只希望最后一列占用剩余空间,请将Width 仅设置在这一列上:

     <DataGrid.Columns>
        <DataGridTextColumn Header="PROGRAM NAME" 
                            Binding="{Binding ProgramDetails.ProgramName}" 
                            MinWidth="325" />
        <DataGridTextColumn Header="Publisher"
                            Binding="{Binding ProgramDetails.PublisherName}" />
        <DataGridTextColumn Header="Estimated Size (KB)"
                            Binding="{Binding ProgramDetails.EstimatedSize}" />
        <DataGridTextColumn Header="Version"
                            Binding="{Binding ProgramDetails.Version}" Width="*" />
    </DataGrid.Columns>
    

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 1970-01-01
      • 2016-01-22
      • 2011-08-20
      • 2011-10-20
      • 2011-04-30
      • 1970-01-01
      • 2011-03-05
      • 2011-12-31
      相关资源
      最近更新 更多