Как настроить привязку GridSplitter к сетке - PullRequest
0 голосов
/ 22 ноября 2018

Я использую набор инструментов Microsoft в UWP, и у меня есть что-то вроде этого

<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, ребята?Я не хочу, чтобы размер столбца 0 изменялся так же, как столбец 1. Как и на картинке, когда я использую разделитель, мне нужно только изменить размер разделителя только столбец 1, столбец 0 просто замораживается.

splitter like this

новый код:

<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>

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Как и на картинке, когда я использую сплиттер, я хочу, чтобы только сплиттер изменял размер только столбец 1, столбец 0 просто завис.

GridSplitter имеет ResizeBehavior собственность.По вашему требованию вы можете установить ResizeBehavior как CurrentAndNext и Grid.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>
0 голосов
/ 22 ноября 2018

У вас есть более одного 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, если вам нужно охватить все строки.

...