如何让扩展器调整网格大小?

时间:2014-10-27 13:22:23

标签: wpf expander

我在这里有一个扩展器,这里显示的边框是它周围的网格:

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

删除了一些按钮。我认为我们不需要它们。

2 个答案:

答案 0 :(得分:1)

您可以使用触发器来更改&#34;高度&#34;

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

答案 1 :(得分:0)

如果我理解正确,你可以做这样的事情

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