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