WPF 中 ComboBox 上的 zIndex?

zIndex on ComboBox in WPF?

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

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

我希望能够在给定时间 show/hide 特定的组合框。但是,尽管不透明度和 IsEnabled 对每个组合框执行 hide/show、disable/enable,但我选择的组合框除外,我无法单击 "yearsCB" 下面的组合框,因为它是最后添加的.

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

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

哪个标签会允许我操作 Canvas 或 ZIndex?

或者有其他更好的方法来实现这个目标吗?

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

Panel.ZIndex="1"

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

在 WPF 中,您将元素定位在它们的父元素中 - 在这种情况下,父元素是 Grid。 Grid class is derived from Panel class and Panel has ZIndex attached property.

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

对于隐藏的组合框:

Visibility="Hidden"

对于可见组合框:

Visibility="Visible"