在wpf中实现合适的ZIndex或绝对位置
问题描述:
在Expander
里面我有一个stack panel
它负责携带其他控件。这个指定的Expander
被加载在一个网格中。问题是当我扩展它时,它的内容被覆盖在网格后面并且不能被看到。 我试图增加内部堆叠面板的ZIndex
以迫使它克服网格,但它没有工作。在wpf中实现合适的ZIndex或绝对位置
我还搜索了绝对位置(根据我在HTML和CSS中的背景),并找到了一些关于使用canvas的文章!
它似乎帆布可以完全是好的,并已为此目的而设计,如果所有的元素已被放置在里面,但正如我所说我的主要布局是网格。
通常元件内部画布的Z次序由XAML的 顺序指定。但您可以通过明确地 覆盖元素上的Canvas.ZIndex来覆盖自然Z-顺序。
那么我该怎么做才能实现我的目标?
这部分被加载到网格的列中。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Expander Background="White" Header="More Options">
<StackPanel Width="150" Height="25">
<CheckBox Margin="4" Content="Option 1" />
<CheckBox Margin="4" Content="Option 2" />
<CheckBox Margin="4" Content="Option 3" />
</StackPanel>
</Expander>
答
我认为这个问题是您在StackPanel的设置高度为25离开StackPanel的高度未设置,它会工作:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Expander Background="White" Header="More Options">
<StackPanel Width="150">
<CheckBox Margin="4" Content="Option 1" />
<CheckBox Margin="4" Content="Option 2" />
<CheckBox Margin="4" Content="Option 3" />
</StackPanel>
</Expander>
</Grid>