【问题标题】:Prevent datagrid column resize on datagrid resize防止在数据网格调整大小时调整数据网格列大小
【发布时间】:2021-05-12 09:15:16
【问题描述】:

我有一个数据网格,其中列的宽度差异很大。它们不是自动生成的。当包含数据网格的窗口被调整大小时,我想防止其中一些列被拉伸。

datagrid在XAML中的定义是这样的

<DataGrid x:Name="DatagridControl" Grid.Row="1"  CanUserAddRows="False" SelectionMode="Single" SelectionUnit="FullRow" AutoGenerateColumns="false" ItemsSource="{Binding Variables, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedVariable, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BeginningEdit="DatagridControl_BeginningEdit" HeadersVisibility="Column" FontSize="16">

我有一些列,我知道最小尺寸是多少,所以它们是这样定义的,它可以像我想要的那样工作

<DataGridTemplateColumn x:Name="dataGridTextColumConnectorLogo" Width="auto"  MinWidth="50" CanUserResize="False">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <materialDesign:PackIcon Width="40" Height="40">
                <materialDesign:PackIcon.Style>
                    <Style TargetType="materialDesign:PackIcon">
                        <Setter Property="Kind" Value="PipeDisconnected"></Setter>
                        <Setter Property="Visibility" Value="Collapsed" ></Setter>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ConnectorType}" Value="ads">
                                <Setter Property="Kind" Value="AlphaBBox"></Setter>
                                <Setter Property="Visibility" Value="Visible" ></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </materialDesign:PackIcon.Style>
            </materialDesign:PackIcon>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

但是有一些列我无法设置 minwith,因为我不知道内容的大小。所以我把它们放在 width=auto 但是当数据网格调整大小时如何防止它们被拉伸?是否可以绑定单元格内元素的宽度来强制执行此操作?

【问题讨论】:

  • 您不能处理Loaded 事件并将此列的MinWidthMaxWidth 属性设置为其计算得到的ActualWidth 吗?
  • 按照您的建议,我在SizeChanged 事件中强制将MinWidth 设置为ActualWidth

标签: wpf datagrid


【解决方案1】:

您可以处理诸如SizeChanged 之类的事件,并在此事件处理程序中将列的MinWidth 属性设置为其计算得出的ActualWidth

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 2012-12-22
    • 2017-08-04
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多