C# wpf是否可能有一个可调整大小的水平扩展器?

C# wpf是否可能有一个可调整大小的水平扩展器?,c#,wpf,visual-studio-2010,xaml,C#,Wpf,Visual Studio 2010,Xaml,我是WPF的新手。我在这里找到了如何进行可调整大小的垂直扩展器: 所以我认为做一个水平的会很容易,我尝试了不同的方法,但没有成功 没有复杂的代码可以完成吗在两个网格行之间有一个GlidSpliter,其中一个有扩展器 布局如下所示: 左扩展器/网格拆分器工作正常。但底部的expander/gridsplitter没有。不过,它在没有网格拆分器的情况下运行良好 我的XAML: <Grid> <Grid.ColumnDefinitions> <

我是WPF的新手。我在这里找到了如何进行可调整大小的垂直扩展器:

所以我认为做一个水平的会很容易,我尝试了不同的方法,但没有成功

没有复杂的代码可以完成吗在两个网格行之间有一个GlidSpliter,其中一个有扩展器


布局如下所示:

左扩展器/网格拆分器工作正常。但底部的expander/gridsplitter没有。不过,它在没有网格拆分器的情况下运行良好

我的XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="10" />
        <RowDefinition Height="Auto"  />
    </Grid.RowDefinitions>

    <DockPanel Grid.Row="0">
        <Expander ExpandDirection="Left" Header="">
            <Expander.Content>
                <Grid>
                    <!-- this works -->
                </Grid>
            </Expander.Content>
        </Expander>
        <TextBox AcceptsReturn="True" />
    </DockPanel>

    <GridSplitter Grid.Row="1" Height="10" HorizontalAlignment="Stretch" ResizeBehavior="PreviousAndCurrent" ResizeDirection="Rows"/>

    <DockPanel Grid.Row="2">
        <Expander ExpandDirection="Down" Header="Summary">
            <Expander.Content>
                <TextBox AcceptsReturn="True" />
            </Expander.Content>
        </Expander>
    </DockPanel>
</Grid>

如果删除中间行和gridsplitter,它可以正常工作,但无法调整大小


非常感谢您的帮助。

第三排的高度也应该是成比例的。为第一行和底部行指定
MinHeight
,使它们不会完全收缩

编辑的XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="6*" MinHeight="100"/>
        <RowDefinition Height="10" />
        <RowDefinition Height="*"  MinHeight="50"/>
    </Grid.RowDefinitions>

    <DockPanel Grid.Row="0">
        <Expander ExpandDirection="Left" Header="">
            <Expander.Content>
                <Grid>
                    <!-- this works -->
                </Grid>
            </Expander.Content>
        </Expander>
        <TextBox AcceptsReturn="True" />
    </DockPanel>

    <GridSplitter Grid.Row="1" Height="2" HorizontalAlignment="Stretch"/>

    <DockPanel Grid.Row="2">
        <Expander ExpandDirection="Down" Header="Summary">
            <Expander.Content>
                <TextBox AcceptsReturn="True" />
            </Expander.Content>
        </Expander>
    </DockPanel>
</Grid>


以下内容对我很有用。展开时显示
GridSplitter
,折叠时隐藏

我使用椭圆填充示例中的窗格,因为这样很容易看到每个面板占用了多少空间

Xaml
你怎么能指望拆分器影响底部固定高度?@Blam这不是问题所在。可调整大小的水平扩展器(位于底部)。另一个问题尚未解决:@bum我删除了它,因为这不是问题所在。我试过几种方法。我认为扩展器不是为调整大小而设计的。谢谢你的输入。但也许我是在要求一些做不到的事情?扩展器不像垂直扩展器那样工作。
<Grid Background="Green">
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto" Name="expanderRow"/>
    </Grid.RowDefinitions>
    <Ellipse Grid.Row="0" Fill="Black"></Ellipse>
    <Expander Grid.Row="2" ExpandDirection="Up" IsExpanded="False" Background="Yellow"
              Expanded="Expander_Expanded"
              Collapsed="Expander_Collapsed">
        <Ellipse Fill="Red"/>
    </Expander>
    <GridSplitter Grid.Row="1" Height="15" HorizontalAlignment="Stretch" Name="expander" Visibility="Collapsed"></GridSplitter>
</Grid>
    private GridLength expandedHeight = new GridLength(0.5, GridUnitType.Star);

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Expander_Expanded(object sender, RoutedEventArgs e)
    {
        expanderRow.Height = expandedHeight;
        expander.Visibility = Visibility.Visible;
    }

    private void Expander_Collapsed(object sender, RoutedEventArgs e)
    {
        expandedHeight = expanderRow.Height;
        expanderRow.Height = GridLength.Auto;
        expander.Visibility = Visibility.Collapsed;
    }