【问题标题】:Reset resizing done by GridSplitter重置由 GridSplitter 完成的大小调整
【发布时间】:2018-04-12 05:15:55
【问题描述】:

我正在使用来自 Microsoft.Toolkit.Uwp.UI.Controls 的 GridSplitter。在用户使用网格拆分器调整两列的大小后,是否有办法重置调整大小并使网格的列宽恢复到调整大小之前的正常宽度?

背景故事:

我有一个页面,它在网格中显示两个用户控件。我在它们之间使用了 gridsplitter 来允许用户调整列的大小。

基于其他交互,显示在网格中的用户控件会发生变化。当我“导航”(即更改网格中的用户控件)时,我想将列宽重置为其原始值(在我的情况下,它们以 * 和 2* 开头,所以我希望列重置回 1/3和 2/3s 大小)。

重置网格列宽的最佳方法是什么?

【问题讨论】:

    标签: xaml uwp uwp-xaml windows-community-toolkit


    【解决方案1】:

    如果你给你的列命名:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="Column1" Width="*"/>
            <ColumnDefinition x:Name="Column2" Width="2*"/>
        </Grid.ColumnDefinitions>
        <!-- ... -->
    </Grid>
    

    您可以在代码隐藏中设置一个命令或事件:

    Column1.Width = new GridLength(1, GridUnitType.Star);
    Column2.Width = new GridLength(2, GridUnitType.Star);
    

    这将重置列宽,并且 GridSplitter 将继续工作。

    我在这里假设您已将 GridSplitter 放在同一列中,并且正在使用 BasedOnAlignment 调整大小行为,就像在 Toolkit 示例应用程序中所做的那样。

    【讨论】:

    • 我正在尝试使用 wpf 样式而不是代码后面的方式进行重置。到目前为止还没有成功。重置一直有效,直到网格拆分器未触及网格大小。一旦 gridsplitter 用于移动东西,基于样式的网格重置不再起作用,不知道为什么。我只能通过后面的代码来完成它。
    猜你喜欢
    • 2016-08-23
    • 2016-05-29
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多