2016-11-12 329 views
0

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> 

回答

0

我认为这个问题是您在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>