Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 合并扩展器和网格(可调整大小的扩展器)_Wpf_Xaml_Grid_Expander_Gridsplitter - Fatal编程技术网

Wpf 合并扩展器和网格(可调整大小的扩展器)

Wpf 合并扩展器和网格(可调整大小的扩展器),wpf,xaml,grid,expander,gridsplitter,Wpf,Xaml,Grid,Expander,Gridsplitter,我想要一个可调整大小的扩展器。我的基本想法是这样的: <Grid HorizontalAlignment="Left"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="2" /> <ColumnDefinition /> </Grid.Column

我想要一个可调整大小的扩展器。我的基本想法是这样的:

<Grid HorizontalAlignment="Left">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="2" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Expander Grid.Column="0" ExpandDirection="Right">
          ...
    </Expander>

    <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />

    ...
</Grid>

...
...

问题是:如果我移动网格拆分器并折叠扩展器,我会得到一个很大的空白区域。怎样才能使整根柱子倒塌?或者是否有其他方法使扩展器“可调整大小”

也许这将有助于解决“列折叠”问题

XAML:

加载项
Name=“expGrid”
和加载项
Collapsed=“Expander\u Collapsed”

C#代码:

private void Expander\u已折叠(对象发送器,路由目标e)
{
var columnindex=Grid.GetColumn(发送方作为扩展器);
var column=expGrid.ColumnDefinitions[ColumnIndex];
column.Width=GridLength.Auto;
}

不确定您想要完成什么,但我认为从概念上讲,
网格应该是
扩展器的一部分。内容
,这对您有用吗

<Expander Header="Test" ExpandDirection="Right" HorizontalAlignment="Left" Background="LightBlue">
    <Expander.Content>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="5"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="Lorem ipsum dolor sit"/>
            <GridSplitter Grid.Column="1" Width="5" ResizeBehavior="PreviousAndCurrent" ResizeDirection="Columns"/>
        </Grid>
    </Expander.Content>
</Expander>

编辑:删除了第一列中的所有触发,因为它似乎不必要

另外:要使其垂直工作,GridSplitter必须设置为
Stretch
,否则默认情况下其宽度为零(当然,其他特定于方向的内容也必须调整,但这很简单)

HorizontalAlignment是Microsoft.NET属性访问器,它实际上是一个依赖属性。这个特殊的依赖属性经常在子类元素(尤其是控件)中以不同的方式设置其明显的“默认”值。[…]例如,标签控件的“默认”水平对齐方式将保留,即使标签直接从FrameworkElement继承水平对齐方式。这是因为该值已在默认的标签样式内,即样式的控制模板内重置


太好了,这正是我需要的!就我的一生而言,我不能让这样的东西水平工作@达维奥:请参阅我在答案中的说明。将示例更新为具有
水平对齐
。我遇到了相同的问题,这是[my solution][1][1]: