在wpf中获得合适的ZIndex或绝对位置

时间:2016-11-12 12:58:29

标签: wpf xaml

Expander内部我有一个stack panel,负责执行其他控制。指定的Expander已加载到网格中。问题是当我扩展它时,它的内容被覆盖在网格后面并且无法看到。 我试图增加内部堆栈面板的ZIndex以强制它克服网格,但它不起作用。

我还搜索了绝对位置(根据我在HTML和CSS中的背景)并找到了一些关于使用canvas的文章!

看起来帆布完全可以用于此目的,如果所有元素都放在其中,但正如我所说,我的主要布局是网格。

  

通常,画布中 元素的Z顺序由   在XAML中订购。但是你可以明确地覆盖自然的Z-Order   在元素上定义Canvas.ZIndex。

那么我该怎样做才能实现目标呢?

此部分已加载到网格列中。

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

1 个答案:

答案 0 :(得分: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>