none
DataGrid 的ColumnWidth=“SizeToHeader” 只会变大不会变小 RRS feed

  • 问题

  • 我个DataGrid 的 FontSize绑定在一个Slider的Value上  

    但Slider值变大的时,DataGrid 的ColumnWidth会变大,Slider值变小的时候,DataGrid 的ColumnWidth不变

    请问这是为什么  要怎么修改才会让ColumnWidth能变小

    2012年4月19日 6:24

答案

  • Header的容器被撑大,他所报的大小导致Header的父元素布局变大,但是缩小他所报的大小不会让他的父元素重新Measure/Arrange 而缩小布局大小。

    因为你只是要做类似缩放的效果,所以我的建议是你可以用Transform来实现。

        <DataGrid ItemsSource="{Binding}" HorizontalContentAlignment="Left" ColumnWidth="SizeToHeader"
                  AutoGenerateColumns="False" Height="100">
          <DataGrid.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}" 
                            ScaleY="{Binding ElementName=slider, Path=Value}"/>
          </DataGrid.LayoutTransform>
    
          <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
          </DataGrid.Columns>
        </DataGrid>
        <Slider x:Name="slider" Minimum="1" Maximum="5"/>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 小携 2012年4月20日 4:03
    2012年4月20日 3:07
    版主

全部回复

  • Header的容器被撑大,他所报的大小导致Header的父元素布局变大,但是缩小他所报的大小不会让他的父元素重新Measure/Arrange 而缩小布局大小。

    因为你只是要做类似缩放的效果,所以我的建议是你可以用Transform来实现。

        <DataGrid ItemsSource="{Binding}" HorizontalContentAlignment="Left" ColumnWidth="SizeToHeader"
                  AutoGenerateColumns="False" Height="100">
          <DataGrid.LayoutTransform>
            <ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}" 
                            ScaleY="{Binding ElementName=slider, Path=Value}"/>
          </DataGrid.LayoutTransform>
    
          <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
          </DataGrid.Columns>
        </DataGrid>
        <Slider x:Name="slider" Minimum="1" Maximum="5"/>


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 小携 2012年4月20日 4:03
    2012年4月20日 3:07
    版主
  • 谢谢....

    2012年4月20日 4:03