C# WPF中组合框上的zIndex?
我需要在同一个数据网格单元中有三个组合框,如下所示:C# WPF中组合框上的zIndex?,c#,wpf,combobox,z-index,C#,Wpf,Combobox,Z Index,我需要在同一个数据网格单元中有三个组合框,如下所示: <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="monthsC
<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>
我希望能够在给定时间显示/隐藏某些组合框。但是,尽管不透明度和禁用,隐藏/显示,禁用/启用每个组合框(我选择的组合框除外),但我无法单击“yearsCB”下面的组合框,因为它是最后添加的
这意味着其他两个组合框不接收鼠标事件
我发现我应该使用一些其他的WPF标记来包装我的组合框,这样我就可以在每个组合框上切换ZIndex
哪一个标签可以让我操纵画布或ZIndex
或者有其他更好的方法来实现这一点吗?如果需要设置ZIndex,可以使用属性
Panel.ZIndex="1"
数字越大,项目越高。默认ZIndex为0
在WPF中,您将元素放置在其父元素内——在本例中,父元素是网格。派生自,面板具有
如果你想在一个位置的3个组合框之间切换,你应该改变它们的可见性。不透明度仅在UI中启用元素时更改视觉状态和IsEnabled集
对于隐藏的组合框:
Visibility="Hidden"
Visibility="Visible"
对于可见组合框:
Visibility="Hidden"
Visibility="Visible"
更新单个组合框的DisplayMemberPath是否比管理z顺序更容易?这不就是你要去的地方吗?基本上,将DisplayMemberPath绑定到单个属性并基于业务逻辑更新该属性。wpf中的DataTriggers可以解决您的问题。请描述一个场景,您希望组合框何时可见/隐藏。@sous2817我只有一个组合框,我用月份、四分之一和年份动态填充。我正在工作,但它与GUI混合在一起。现在尝试使用MVVM和INotifyPropertyChanged,但不确定如果组合框中值的数据类型动态更改,如何将单个组合框绑定到单个属性。@Sham我问了这个问题,或者这个站点上有很多示例。Visibility属性完成了这项工作。现在开始工作了。但我不明白如何应用Panel.ZIndex,因为ComboBox不包含属性Panel.Grid类是从Panel类派生的,它包含ZIndex属性。Combobox位于网格中,因此您可以将其设置为类似于Grid.Row。但我必须使用顶级网格对象以某种方式更改某些Combobox ZIndex??在您的情况下,网格是顶级对象,但更重要的是,它是Combobox的父对象。您正在将元素定位在其父元素内-在本例中,它是网格。