2015-06-15 64 views
0

在WPF的形​​式,我有一個以上的其他控制擴張的膨脹,如按鈕:WPF膨脹沒有展開上述按鈕,使按鈕無法點擊

<Expander Grid.Row="0" Panel.ZIndex="99" Name="searchMenuExpander" Header="Search menu" FontWeight="Bold" HorizontalAlignment="Stretch" Margin="10,10,0,0" MinWidth="510" MinHeight="200" VerticalAlignment="Top" Foreground="MidnightBlue" Cursor="Arrow"> 
    <Grid Background="White"> 
     <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
     <TextBlock Text="Name" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20,10,0,0" Width="65" Height="20" Cursor="Arrow" /> 
     <TextBox Name="nameSearchTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="115,10,0,0" Width="100" Height="20"/> 
    </Grid> 
</Expander> 
<Button Content="Button" Height="34" Width="85"/> 

我的問題是,我的控制是擴張的背後是不再可點擊,即使擴展器未擴展。發生什麼事?我怎麼能擺脫這個錯誤?

+0

什麼是包裝你的'Expander'父控件? –

+0

按鈕的畫布定位的目的是什麼? – Kryptos

+0

父控件只是一個網格。忘記畫布,它是更大代碼的一部分,但在這裏並不重要。我編輯了我的問題以將其刪除 – MarinD

回答

0

我發現了一種做法,代碼背後。我把我的ExpanderCanvas,我加入到我的Expander兩個事件:

Expanded="searchMenuExpander_Expanded"Collapsed="searchMenuExpander_Collapsed" 被定義爲:

private void searchMenuExpander_Expanded(object sender, RoutedEventArgs e) 
    { 
     Canvas.SetZIndex(searchMenuCanvas, 99); 
    } 

    private void searchMenuExpander_Collapsed(object sender, RoutedEventArgs e) 
    { 
     Canvas.SetZIndex(searchMenuCanvas, 0); 
    } 
0

假設您有一個Grid,它是您的Expander和您的Button的父親,您需要將該按鈕放在不同的行上。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Expander Grid.Row="0"> 
    </Expander> 
    <Button Grid.Row="1" /> 
</Grid> 

通過(其中包含擴展)設置Height第一行至Auto,你保證,這將是最小化時的膨脹不膨脹(僅擴展的頭部部分將佔據的空間) 。

+0

謝謝您的回答。我試過了,但不幸的是這不起作用。如果我將其高度設置爲「自動」,則該錯誤仍在發生。如果我將它設置爲整數值,它可以工作,但是通過向下移動按鈕。我只想讓擴展器擴展到按鈕上方。 – MarinD

+0

問題是使用畫布定位按鈕,它會覆蓋任何容器邏輯(如網格行/列)。 – Kryptos