结合扩展和电网(可调整大小的扩展)结合扩展和电网(可调整大小的扩展)(Combine expande

2019-05-12 07:42发布

我想有像可调整大小的扩展。 我的基本想法是这样的:

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

与此问题:如果我将电网分离器和塌陷扩展我有一个大的空白区域。 怎样才能使整列崩溃? 还是有另一种方法,使扩张“调整大小”

Answer 1:

不知道你是什么试图完成,但我认为在概念上的Grid应该是一部分Expander.Content ,将这项工作吗?

<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的HorizontalAlignment必须设置为Stretch ,否则将会产生零宽度在默认情况下(当然,其他一切是定向特定需要以及适应但这是简单)

的Horizo​​ntalAlignment是为了什么在现实中是一个依赖属性在Microsoft .NET属性访问。 这种特殊的依赖属性相当频繁有其明显的“默认”值在子类的元件,尤其是控制不同地设置。 [...]例如,对于一个标签控制的Horizo​​ntalAlignment的明显的“默认”将左,即使标签继承的Horizo​​ntalAlignment自FrameworkElement引导。 这是因为,值标签的默认样式内复位,该样式的控制模板中。



Answer 2:

也许这将有助于解决您的“一栏崩溃”问题

XAML:

添加在<Grid> Name="expGrid"并添加<Expander> Collapsed="Expander_Collapsed"

C#代码:

private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
  var colomnIndex = Grid.GetColumn(sender as Expander);
  var colomn = expGrid.ColumnDefinitions[colomnIndex];
  colomn.Width = GridLength.Auto;
}


文章来源: Combine expander and grid (resizable expander)