首页 > 解决方案 > WPF中组合框上的zIndex?

问题描述

我需要在同一个数据网格单元格中有三个组合框,如下所示:

<Grid Name="gridFormat_1" Grid.Row="1" Grid.Column="6" Margin="0, 5, 5, 5" >
    <Grid.RowDefinitions>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <ComboBox Grid.Row="0" Name="monthsCB" DisplayMemberPath="MonthName" IsEnabled="False" Opacity="0" />
    <ComboBox Grid.Row="0" Name="quartalsCB" DisplayMemberPath="QuartalNumber" IsEnabled="False" Opacity="0" />
    <ComboBox Grid.Row="0" Name="yearsCB" DisplayMemberPath="Year" IsEnabled="False" Opacity="0" />
</Grid>

我希望能够在给定时间显示/隐藏某些组合框。但是,尽管 Opacity 和 IsEnabled、隐藏/显示、禁用/启用除我选择的组合框之外的每个组合框,但我无法单击“yearsCB”下方的组合框,因为它是最后添加的。

这意味着其他两个组合框不接收鼠标事件。

我发现我应该使用其他一些 WPF 标记来包装我的组合框,这样我就可以在每个组合框上切换 ZIndex。

哪个标签可以让我操作 Canvas 或 ZIndex?

还是有其他更好的方法来实现这一目标?

标签: c#wpfcomboboxz-index

解决方案


如果需要设置 ZIndex,可以通过属性来设置

Panel.ZIndex="1"

数字越高,项目越高。默认 ZIndex 为 0。

在 WPF 中,您将元素定位在它们的父级内 - 在这种情况下,父级是 Grid。Grid 类派生自Panel 类,并且 Panel 具有ZIndex 附加属性

如果您想在一个位置的 3 个组合框之间切换,您应该更改它们的可见性。如果元素在 UI 中启用,Opacity 只会更改视觉状态和 IsEnabled 设置。

对于隐藏的组合框:

Visibility="Hidden"

对于可见的组合框:

Visibility="Visible"

推荐阅读