2016-11-12 84 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>