You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过布尔绑定控制WPF DataGrid旋转并修复单元格尺寸异常

WPF DataGrid 视图旋转切换与单元格尺寸调整问题

我在代码中使用了WPF DataGrid,需要在特定场景下切换其视图模式(横向或纵向显示列,实现“旋转”效果)。计划通过接口传入的布尔变量来启用或停用变换视图,推测可能需要用到转换器。我从Stack Overflow复制了相关代码并做了调整,但仍有疑问。

已知旋转或恢复时必须修改以下参数:

  • RotateTransform 的 Angle="-90"
  • MatrixTransform 的 Matrix="-1 0 0 1 0 0"
  • RotateTransform 的 Angle="-90"
  • ScaleTransform 的 ScaleX="1"、ScaleY="-1"
  • RotateTransform 的 Angle="-90"
  • ScaleTransform 的 ScaleX="1"、ScaleY="-1"

以下是我的XAML代码:

<DataGrid ItemsSource="{Binding Path=CurrentTable.DefaultView,IsAsync=True}"
          AutoGenerateColumns="True" 
          AutoGeneratingColumn="DataGrid_AutoGeneratingColumn" SelectedItem="{Binding 
          SelectedItem}" IsReadOnly="False" 
          PreviewMouseRightButtonDown="DataGrid_PreviewMouseRightButtonDown" 
          PreviewMouseLeftButtonDown="DataGrid_PreviewMouseLeftButtonDown"  
          CellEditEnding="DataGrid_CellEditEnding" CanUserAddRows="False" 
          CanUserReorderColumns="False" 
          EnableColumnVirtualization="True" EnableRowVirtualization="True" 
          VirtualizingStackPanel.VirtualizationMode="Standard">

  <DataGrid.LayoutTransform>
    <TransformGroup>
      <RotateTransform Angle="90"/>
      <MatrixTransform Matrix="-1 0 0 1 0 0" />
    </TransformGroup>
  </DataGrid.LayoutTransform>
  <DataGrid.ColumnHeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}"
          BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
      <Setter Property="LayoutTransform">
        <Setter.Value>
          <TransformGroup>
            <RotateTransform Angle="-90"/>
            <ScaleTransform ScaleX="1" ScaleY="-1" />
          </TransformGroup>
        </Setter.Value>
      </Setter>
    </Style>
  </DataGrid.ColumnHeaderStyle>
  <DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
      <Setter Property="LayoutTransform">
        <Setter.Value>
          <TransformGroup>
            <RotateTransform Angle="-90"/>
            <ScaleTransform ScaleX="1" ScaleY="-1" />
          </TransformGroup>
        </Setter.Value>
      </Setter>
    </Style>
  </DataGrid.CellStyle>
</DataGrid>

不知从何入手,希望能得到帮助。


编辑1

在@thatguy的帮助下,已实现DataGrid的旋转,但旋转后单元格尺寸异常过大,想了解如何调整。

内容的提问来源于stack exchange,提问作者user18091434

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:06:16