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

我的问题是,即使展开器未展开,扩展器后面的控件也不再可单击。发生了什么事情?我怎样才能摆脱这个错误?

假设您有一个同时是ExpanderButton父级的Grid,您需要将按钮放在另一行上。

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

通过将第一行(包含扩展器)的Height设置为 Auto ,可以确保在扩展器不展开时将其最小化(只有扩展器的标头部分会占用空间)。

我找到了一种方法,背后有代码。我把Expander放在一个Canvas里,并在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);
    }

相关内容

  • 没有找到相关文章

最新更新