Как заставить экспандер изменять размер сетки?

У меня вот такой расширитель, рамка, показанная здесь, представляет собой сетку вокруг него:

-----------------------------------
|                                 |
| ^ expander                      |
|---------------------------------|

Как мне изменить размер этой сетки, когда я разверну расширитель?

Результат такой:

-----------------------------------
|                                 |
| V expander                      |
|                                 |
|                                 |
| content of expander             |
|                                 |
|                                 |
|---------------------------------|

Пожалуйста, не обращайте внимания на размер окна или размер внешней сетки. Я просто хочу изменить размер этого.

ОБНОВИТЬ:

Я надеюсь, что когда пользователь закроет расширитель, сетка вернется к рисунку 1.

Фрагмент XAML:

<Grid Margin="143,92,143,148" Background="#FF646464" Width="472" Height="217">
                <Border BorderBrush="#FF5983BF" BorderThickness="1"/>
                <Expander x:Name="advancedExpander" Header="Advanced" HorizontalAlignment="Left" Margin="10,196,0,-147" Width="452" Height="168" VerticalAlignment="Top" Foreground="#FFC7C7C7">
                    <Grid Background="#FFE5E5E5"/>
                </Expander>

            </Grid>

удалил несколько кнопок. я не думаю, что они нам нужны.


person Jason Hu    schedule 27.10.2014    source источник
comment
Вы пытались установить столбец / строку _1 _ / _ 2_ на Auto   -  person dkozl    schedule 27.10.2014
comment
опубликуйте свой соответствующий Xaml   -  person Mark    schedule 27.10.2014
comment
@dkozl извини, я не совсем понимаю. Обычно я работаю с сервером, работаю с CLI. но внезапно мой босс попросил меня самому создать графический интерфейс. так что я новичок в WPF. я пытаюсь сделать работу как можно скорее.   -  person Jason Hu    schedule 27.10.2014
comment
@Mark, см. Выше. пока особо ничего не сделано. просто расширитель в сетке.   -  person Jason Hu    schedule 27.10.2014
comment
@HuStmpHrrr вам нужно будет поделиться своим XAML для какого-то конкретного решения   -  person dkozl    schedule 27.10.2014
comment
@dkozl, пожалуйста, проверьте. ничего особенного.   -  person Jason Hu    schedule 27.10.2014
comment
@HuStmpHrrr, если вы хотите изменить размер, почему вы устанавливаете фиксированную высоту на Grid? Также нет необходимости в Grid, поскольку Expander может быть дочерним элементом Border   -  person dkozl    schedule 27.10.2014
comment
@dkozl, я просто хочу посмотреть, изменится ли его размер путем расширения. и это показывает, насколько я новичок. Я немного прикоснулся к wpf, так же сложно, как перемещать элементы управления, когда изучал C #. после этого я не занимался дизайном графического интерфейса.   -  person Jason Hu    schedule 27.10.2014


Ответы (2)


Вы можете использовать триггеры, чтобы изменить "высоту"

<Style TargetType="RowDefinition" x:Key="ExpandedRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsExpanded}" Value="True">
                <Setter Property="Height" Value="400"/>
            </DataTrigger>
        </Style.Triggers>
 </Style>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" Style="{StaticResource ExpandedRow}" />
    </Grid.RowDefinitions>
</Grid>
<Expander MaxHeight="400" Name="Expander" IsExpanded="{Binding IsExpanded}">
    ...
</Expander>

ViewModel.cs

public bool IsExpanded { get; set; }
person Bashnia007    schedule 24.06.2015

Если я правильно понял, можно сделать что-то вроде этого

<Grid>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" MaxHeight="200"/>
                <RowDefinition Height="3"/>
            </Grid.RowDefinitions>
            <GridSplitter Height="3" HorizontalAlignment="Stretch" Grid.Row="1"/>
            <GridSplitter Height="3" HorizontalAlignment="Stretch" Grid.Row="3"/>
            <Expander Header="Header" HorizontalAlignment="Stretch" VerticalAlignment="Top"  Background="Gray"  IsExpanded="False" Grid.Row="0" >
                <Grid  Height="296" >
                </Grid>
            </Expander>

        </Grid>
    </Grid>
person N.J    schedule 27.10.2014
comment
кажется нет. Я хочу, чтобы сетка, содержащая расширитель, после расширения стала выше. а когда он закрыт, он возвращается к исходной высоте. - person Jason Hu; 27.10.2014