我有这个:
<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 *设置,以便在调整窗口大小时,列可以正确调整大小?
答案 0 :(得分:10)
宽度属性不是简单的double
,而是System.Windows.GridLength
对象,其中包含值属性(double
)和 GridUnitType 属性(GridUnitType
),它是enum
。
因此,要将列的宽度设置为50 *:
grid.ColumnDefinitions[0].Width = new GridLength(50, GridUnitType.Star)
要保存和恢复,您需要做的就是保存每个列的值和GridUnitType
。
希望它有所帮助。