2011-03-25 2 views
2

Мне интересно, есть ли способ решить это, изменив код XAML?Изменение размера другой строки строки сетки в WPF

Пожалуйста, посмотрите на этот образец картины:

enter image description here

Что хочет сделать, когда пользователь перетаскиванием GridSeparater No.1, я хочу, чтобы изменить размер Чет 3-й ряд сетки.

Это потому, что в этом приложении первая и третья строки имеют переменный размер, а второй - фиксированный размер.

Возможно ли это?

ответ

4

Это возможно с ResizeBehaviour="PreviousAndNext" (Link to MSDN). Это позволяет указать, какие строки должны быть затронуты относительно GridSplitter.

<Grid Width="300" Height="200" Background="Yellow" ShowGridLines="True"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="20"/> 
    <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

        <GridSplitter Grid.Row="1" 
         ResizeDirection="Rows" 
         ResizeBehavior="PreviousAndNext" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Top" 
         Background="Black" 
         ShowsPreview="True" 
         Height="5" 
         /> 



</Grid> 
+0

Прохладный - не знал о ResizeBehaviour. Узнал что-то, THX! –

+0

Ницца! Я узнал, что ShowsPreview = «True» довольно важен. Если вы не установите это свойство, поведение GridSplitter позволит вам полностью свернуть верхнюю строку, и вы не сможете ее вернуть. +1 – Stewbob

1

Вы можете попробовать установить как MinHeight, так и MaxHeight на то же значение в центральной строке, что приведет к пересчету нижней части при изменении размера верхней части. Что-то вроде этого:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="50" MaxHeight="50" MinHeight="50"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions>   
    ... other content 
    <GridSplitter Height="3" Grid.Row="1" HorizontalAlignment="Stretch"/> 
    <GridSplitter Height="3" Grid.Row="3" HorizontalAlignment="Stretch"/> 
    </Grid> 
Смежные вопросы