保存GridSplitter位置

dan*_*son 4 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" />
Run Code Online (Sandbox Code Playgroud)

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

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

Cap*_*ain 10

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

grid.ColumnDefinitions[0].Width = new GridLength(50, GridUnitType.Star)
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.

  • 如果您还想保存该值,我建议使用 GridUnitType.Pixel,这样您就不必转换任何内容 (2认同)