【问题标题】:How to make expander resize the grid?如何让扩展器调整网格的大小?
【发布时间】:2015-06-24 21:33:55
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试将列/行 Width/Height 设置为 Auto
  • 发布相应的 Xaml
  • @dkozl 抱歉,我不太明白。我通常是一名服务器人员,使用 CLI。但突然间,我的老板让我一个人做一个 GUI。所以我对 WPF 很陌生。我正在努力尽快完成工作。
  • @Mark 请参见上文。还没有什么特别的。只是网格中的扩展器。
  • @HuStmpHrrr 你需要分享你的 XAML 以获得一些特定的解决方案

标签: wpf expander


【解决方案1】:

您可以使用触发器来更改“高度”

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 好像没有。我希望包含扩展器的网格在扩展后变得更高。当它关闭时,它会收缩回原来的高度。
    猜你喜欢
    • 2011-07-30
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多