相关疑难解决方法(0)

WPF GridSplitter - 按比例保存和恢复位置和分割

我正在创建一个3列UI,列之间有网格分割器.我需要保存列的状态,以便在用户关闭并重新打开应用程序时,它看起来就像是他们离开了它.但我也试图让柱子按比例分割 - 我的意思是,如果你拉伸窗口,所有三个面板都会增长,如果你移动左边的分割器,它会改变左边和中间列之间的分割.

我目前只实现了第一个要求 - 它保存了列宽的状态.我还使列强制所有三列的最小宽度.但据我了解,告诉拆分器按比例分割的方法是使用星形大小的列宽.由于我已经使用Width属性来保存和恢复状态,我不确定我能否达到我想要的目标.

有没有人设法保存列宽的状态并且拆分成比例?

这是我目前所拥有的一些代码:

   <Grid x:Name="mainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="leftColumn" Width="{Binding MainWindowLeftColumnWidth, Mode=TwoWay, Source={x:Static prop:Settings.Default}}" MinWidth="200" MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}, Path=LeftColumnMaxWidth, Mode=OneWay}"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition x:Name="centerColumn" Width="{Binding MainWindowCenterColumnWidth, Mode=TwoWay, Source={x:Static prop:Settings.Default}}" MinWidth="300" MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}, Path=CenterColumnMaxWidth, Mode=OneWay}"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition x:Name="rightColumn" Width="*" MinWidth="500"/>
        </Grid.ColumnDefinitions>
        <StackPanel x:Name="leftPanel" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"/>
        <GridSplitter x:Name="leftSplitter" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Stretch" ResizeBehavior="PreviousAndNext" Width="5" ResizeDirection="Columns"/>
        <StackPanel x:Name="centerPanel" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"/>
        <GridSplitter x:Name="rightSplitter" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Stretch" ResizeBehavior="PreviousAndNext" Width="5" ResizeDirection="Columns"/> …
Run Code Online (Sandbox Code Playgroud)

wpf binding gridsplitter

12
推荐指数
1
解决办法
8779
查看次数

标签 统计

binding ×1

gridsplitter ×1

wpf ×1