ComboBox下拉列表出现在窗口下方

时间:2012-06-28 15:41:46

标签: c# wpf user-interface drop-down-menu

所以我有一个如下所示的组合框,编码如下;

AllowsTransparency="True" Background="Transparent">
        <Border CornerRadius="10" Background="Beige" BorderBrush="Aqua" BorderThickness="2">
            <Grid>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <Label Name="lblText"></Label>
                    <ComboBox Name="cbxNumbers"></ComboBox>
                    <TextBox Name="txtNumbers" Visibility="Collapsed"></TextBox>
                    <Button HorizontalAlignment="Center" Name="btnDone"
Click="btnDone_Click">That's Right!</Button>
                </StackPanel>
                <Button VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="1"
FontSize="8" Name="btnChangeInput" Click="btnChangeInput_Click">Let me chose the number
</Button>
            </Grid>
        </Border>

然后在这样的代码中填充;

lblText.Content = Text;
cbxNumbers.Items.Add(5);
cbxNumbers.Items.Add(10);
cbxNumbers.Items.Add(50);
cbxNumbers.Items.Add(100);
cbxNumbers.Items.Add(1000);
cbxNumbers.Items.Add(10000);
cbxNumbers.Items.Add(100000);
cbxNumbers.Items.Add(1000000);
cbxNumbers.SelectedIndex = 0;

我的问题很明显,为什么我的Dropdown显示在我的窗下?

ComboBoxProblem

更新

引用微软

  

感谢您报告此问题。虽然这个问题已经存在   调查,我们可能没有.NET 4.0中的修复程序。我们   当我们能够解决问题时,将再次更新此错误   未来发布。谢谢!

太棒了...任何解决方法的想法?

1 个答案:

答案 0 :(得分:3)

AllowTransparency=TRUE这是一个记录良好的错误。它只发生在运行Win XP的一些计算机上。

http://connect.microsoft.com/VisualStudio/feedback/details/465964/wpf-combobox-dropdown-list-appears-behind-the-form-when-allowstransparency-true

找到了一种解决方法here

  

如前所述,这是XP上分层窗口的问题。有   在WPF级别可以做的事情并不多,无法解决这个问题   XP不再被服务,这不太可能   固定。但是,您可以采用可能的解决方法。

     

问题的根源是WPF使用了一种叫做“分层”的东西   Windows“当WindowStyle = None且AllowTransparency = True时。通常是   这样做的原因是实现自定义窗口chrome。最近   WPF团队发布了一个允许您获得自定义chrome的库   没有诉诸分层窗口。该库可在

获得      

http://code.msdn.microsoft.com/WPFShell

     

这不支持每像素不透明度,但确实允许   完全自定义渲染窗口,包括正常的区域   由系统管理。它可以让你设置窗口的半径   角落,但没有完全任意的形状。如果可以使用   这个库而不是AllowTransparency = True然后它应该解决   这个问题。

Microsoft发布了hotfix,但似乎没有修复与此问题相关的所有问题。