2015-06-15 32 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