WPF 扩展器未在按钮上方扩展使按钮不可点击
WPF expander not expanded above buttons make buttons unclickable
在 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"/>
我的问题是我位于扩展器后面的控件无法再单击,即使扩展器未展开也是如此。怎么了?我怎样才能摆脱这个错误?
假设您有一个 Grid
,它是 Expander
和 Button
的 parent,您需要将 Button 放在不同的行上。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Expander Grid.Row="0">
</Expander>
<Button Grid.Row="1" />
</Grid>
通过将第一行(包含扩展器)的 Height
设置为 Auto
,您可以确保当扩展器为 not-expanded(只有 header部分扩展器会占用space).
我找到了一种方法,代码在后面。我将我的 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);
}
在 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"/>
我的问题是我位于扩展器后面的控件无法再单击,即使扩展器未展开也是如此。怎么了?我怎样才能摆脱这个错误?
假设您有一个 Grid
,它是 Expander
和 Button
的 parent,您需要将 Button 放在不同的行上。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Expander Grid.Row="0">
</Expander>
<Button Grid.Row="1" />
</Grid>
通过将第一行(包含扩展器)的 Height
设置为 Auto
,您可以确保当扩展器为 not-expanded(只有 header部分扩展器会占用space).
我找到了一种方法,代码在后面。我将我的 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);
}