保存GridSplitter位置

时间:2010-09-27 08:23:57

标签: wpf

我有这个:

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="50*" />
        </Grid.ColumnDefinitions>
        <GridSplitter Background="{x:Static SystemColors.ControlBrush}"
          Grid.Column="1"
          Margin="0,0,0,0"
          Name="splitter"
          HorizontalAlignment="Stretch" />

我正在尝试保存并恢复分割器位置。我正在使用grid.ColumnDefinitions[0].Width,它以像素为单位返回列的宽度。

当我恢复位置时,如何恢复并保留50 *设置,以便在调整窗口大小时,列可以正确调整大小?

1 个答案:

答案 0 :(得分:10)

宽度属性不是简单的double,而是System.Windows.GridLength对象,其中包含属性(double )和 GridUnitType 属性(GridUnitType),它是enum。 因此,要将列的宽度设置为50 *:

grid.ColumnDefinitions[0].Width = new GridLength(50, GridUnitType.Star)

要保存和恢复,您需要做的就是保存每个列的值和GridUnitType

希望它有所帮助。