在父级后面呈现的WPF组合框项目列表/上下文菜单

时间:2011-03-05 19:29:00

标签: wpf combobox contextmenu

如果已经设置了组合框的ItemSource属性,为什么单击组合框的下拉按钮不显示可用项目列表?这可能是相关的,但在同一控件中,任何上下文菜单都显示在用户控件后面:

此控件的XAML如下:

 <Border Name="Border" Padding="5">
        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <ScrollViewer.Resources>
                <Style TargetType="{x:Type CheckBox}">
                    <Setter Property="Padding" Value="8,0,0,0"/>
                    <Setter Property="VerticalAlignment" Value="Center"/>
                </Style>            
            </ScrollViewer.Resources>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>                          
                    <Grid Margin="5,4,0,4" >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="20" />
                            <ColumnDefinition SharedSizeGroup="labelColumn1" />
                            <ColumnDefinition  SharedSizeGroup="labelColumn2" />
                            <ColumnDefinition SharedSizeGroup="dataEntryColumn" />
                            <ColumnDefinition  Width="30"/>
                            <ColumnDefinition  SharedSizeGroup="labelColumn2"/>
                            <ColumnDefinition SharedSizeGroup="dataEntryColumn" />
                            <ColumnDefinition MaxWidth="0" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition MinHeight="23" />
                            <RowDefinition MinHeight="23" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto"/>

                        </Grid.RowDefinitions>

                        <TextBlock Text="Geometry Type" VerticalAlignment="Center" Grid.Column="1" Grid.Row="0"/>                       
                        <ComboBox Grid.Column="3" Margin="6,1,0,1"   Grid.Row="0" Width="150"  
                                  Name="cmboGeometryTypes"   
                                  SelectedItem="{Binding GeometryType, Mode=TwoWay}"
                                  HorizontalAlignment="Left"   
                                  DisplayMemberPath="Name"                                   
                                  Grid.ColumnSpan="1"                                      
                                 />

                        <TextBlock Text="Symbol Type" 
                                   Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"/>
                        <ComboBox
                            Name="cmboSymbolEditors"
                            SelectedItem="{Binding SymbolEditorViewModel, Mode=TwoWay}"
                            HorizontalAlignment="Left"   
                            DisplayMemberPath="Alias" 
                            Width="150"
                            Grid.Column="3" 
                            Margin="6,1,0,1" 
                            Grid.Row="1"                            
                            Grid.ColumnSpan="1"  />               
                </Grid>

                <Label Padding="10,0,0,0" Margin="10,0,0,3" Style="{StaticResource fadingLabelSeperatorStlye}" Grid.Row="1">
                    Editor
                </Label>
                <local:SymbologyEditorControl x:Name="editor" Grid.Row="2"/>                               
            </Grid>
        </ScrollViewer>
    </Border>

我观察的效果如下enter image description here

所示

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

有一个常见的WPF错误导致任何Popup类型UI显示在后面而不是最顶层的这种行为,这可能就是你所看到的。我有一段时间没有看到这个问题,但我不确定它是否已修复。它与糟糕的视频驱动程序有关,因此您可能只在某些计算机上看到它而不是所有时间。

MS支持提供了一个修补程序,但是将应用程序切换为使用软件渲染可能更容易。