2

したがって、次のようにコード化された、以下のようなコンボボックスがありました。

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ショーが私の窓の下にあるのですか?

コンボボックスの問題

アップデート

引用マイクロソフト

この問題を報告していただきありがとうございます。この問題は調査中ですが、.NET 4.0 では修正プログラムが提供されない可能性があります。今後のリリースで問題を修正できるようになったら、このバグを再度更新します。ありがとう!

素晴らしい...回避策のアイデアはありますか?

4

1 に答える 1

3

これは、よく文書化されたバグAllowTransparency=TRUEです。これは、Win XP を実行している一部のコンピューターでのみ発生します。

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

回避策はここにあります

前述のように、これは XP のレイヤード ウィンドウの問題です。これを解決するために WPF レベルでできることはあまりなく、XP がサービスされなくなったことを考えると、これが修正される可能性はほとんどありません。ただし、使用できる潜在的な回避策があります。

この問題の原因は、WindowStyle=None および allowTransparency=True の場合に、WPF が「レイヤード ウィンドウ」と呼ばれるものを使用することです。多くの場合、これを行う理由は、カスタム ウィンドウ クロムを実装するためです。最近、WPF チームは、レイヤード ウィンドウに頼らずにカスタム クロムを取得できるライブラリを公開しました。ライブラリは次の場所で入手できます。

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

これは、ピクセルごとの不透明度をサポートしていませんが、システムによって通常管理される領域を含め、ウィンドウの完全なカスタム レンダリングを可能にします。ウィンドウの角の半径を設定できますが、完全に任意の形状にすることはできません。EnabledTransparency=True の代わりにこのライブラリを使用できる場合は、この問題を解決する必要があります。

Microsoft は修正プログラムを発行しました、この問題に関連するすべての問題が修正されたわけではないようです。

于 2012-06-28T15:44:44.040 に答える