【问题标题】:How to setting GridSplitter's affection to a grid如何设置 GridSplitter 对网格的影响
【发布时间】:2018-11-23 16:05:26
【问题描述】:

我在 UWP 中使用 microsoft 工具包并有类似的东西

<Grid>
   <Grid.RowDefinitions>
        <RowDefinition Height="7*"/>
        <RowDefinition Height="3"/>
        <RowDefinition Height="3*"/>                    
        <RowDefinition Height="4*"/>
   </Grid.RowDefinitions>
<Grid Grid.Row="0">
  <Grid.ColumnDefinitions>
      <ColumnDefinition Width="2*"/>
      <ColumnDefinition Width="3*"/>
  </Grid.ColumnDefinitions>  
</Grid>
<Grid Grid.Row="1">
<controls:GridSplitter ResizeBehavior="PreviousAndNext" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
</Grid>
</Grid>

我如何才能将拆分器的喜爱设置为仅列 1 的人?我不想像第 1 列那样调整第 0 列的大小。就像在图像中一样,当我使用拆分器时,我只希望拆分器调整第 1 列的大小,第 0 列只是冻结。

新代码:

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <Grid.RowDefinitions>
                <RowDefinition Height="7*"/>
                <RowDefinition Height="3"/>
                <RowDefinition Height="3*"/>
                <RowDefinition Height="4*"/>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="3*"/>                   
                </Grid.ColumnDefinitions>
                <Grid Grid.Column="0" Background="Red"></Grid>
            </Grid>
            <Grid Grid.Row="1">
                <controls:GridSplitter GripperCursor="Help" HorizontalAlignment="Stretch" Grid.Column="1" ResizeDirection="Columns"
                                       ResizeBehavior="CurrentAndNext" CursorBehavior="ChangeOnSplitterHover" VerticalAlignment="Stretch" ></controls:GridSplitter>
            </Grid>
            <Grid Grid.Row="2">
                <TextBlock Text="aoisdjaisodjaiosdjsa" Width="60" Height="60" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
            </Grid>
</Grid>

【问题讨论】:

    标签: c# uwp gridsplitter


    【解决方案1】:

    你有不止一个Grid,所以我不知道你想要你的GridSplitter 的网格,但你所要做的就是创建一个GridSplitter 属性Grid.Column 你想把控件放入。

    例子:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="7*"/>
            <RowDefinition Height="3"/>
            <RowDefinition Height="3*"/>
            <RowDefinition Height="4*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="3*"/>
            </Grid.ColumnDefinitions>
        </Grid>
        <!-- Means GridSplitter stay on column 1 based on the grid he is -->
        <controls:GridSplitter Grid.Column="1" ResizeBehavior="PreviousAndNext" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
        <Grid Grid.Row="1">
           <!-- Your XAML code here-->
        </Grid>
    </Grid>
    

    如果你必须跨越所有行,你可以使用Grid.RowSpan

    【讨论】:

    • 对不起,我想你误会了,我只是为了更容易理解而编辑了帖子
    【解决方案2】:

    如图所示,当我使用拆分器时,我只想拆分器调整第 1 列的大小,第 0 列只是冻结。

    GridSplitter 具有 ResizeBehavior 属性。根据您的要求,您可以将ResizeBehavior 设置为CurrentAndNextGrid.Column="1",然后该列将被冻结。您可以参考以下内容。

    <controls:GridSplitter
            GripperCursor="Help"
            HorizontalAlignment="Left"
            Grid.Column="1"
            ResizeDirection="Columns"
            ResizeBehavior="CurrentAndNext"
            CursorBehavior="ChangeOnSplitterHover"
            Width="10">
      <controls:GridSplitter.RenderTransform>
        <TranslateTransform X="-5" />
      </controls:GridSplitter.RenderTransform>
    
    </controls:GridSplitter>
    

    【讨论】:

    • 感谢您的时间,我在我的代码中做了,但是当我将它悬停时,它是一个水平拆分器而不是垂直拆分器。拆分器位于第 1 行,当我使用拆分器时,我希望第 2 行向上移动并调整第 1 列而不是第 0 列的大小
    • 真的很抱歉我的工作不允许我分享完整的 xaml 代码:(
    • 您可以使用 Grid.Column 或 Grid.Row 附加属性修改 GridSplitter 位置。
    • 您需要在您的案例中发布您的代码,请避免使用新帖子修改答案。
    • 我去查一下,请稍等。
    猜你喜欢
    • 2011-08-05
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多