保存GridSplitter的位置

5

我有这个:

        <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个回答

14

Width属性不是一个简单的double,它是一个包含Value属性(double)和GridUnitType属性(GridUnitType枚举类型)的System.Windows.GridLength对象。 因此,要将您的列宽设置为50*:

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

要保存和恢复所有内容,你只需要保存每列的值和GridUnitType

希望对你有所帮助。


我的问题是为什么宽度值由双精度浮点数组成?这会由于舍入误差使序列化变得更加困难。 - Krythic
1
如果您想保存该值,我建议使用GridUnitType.Pixel,这样您就不必转换任何内容。 - julienduchow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接