14

Windows 7 以下で .net 4 フレームワークを対象として問題なく動作しているアプリケーションがあります。
アプリケーションが現在 Windows 8 にインストールされている場合 (.net 4.5 を実行しているが、.net 4 をターゲットにしている)、リストボックスまたはコンボボックスで選択された項目の背景が青色になり、フォーカスされた項目の背景が白色になります。とにかくこれを削除する方法はありますか?
XAMLで次を使用して、問題のスタイルを設定しています.Windows 8.

<ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                    <Style.Resources>
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
                    </Style.Resources>
                </Style>
            </ListBox.ItemContainerStyle>
4

6 に答える 6

10

これをどのように解決したかを忘れてしまいました....空のアイテムコンテナスタイルを作成し、リストボックス/コンボボックスなどに割り当てるだけでよいことがわかりました....これを使用するだけでなく、保持することもできますListBox Style="{StaticResource CurrentStyle}" ItemContainerStyle="{StaticResource BlankListBoxContainerStyle}" /> BlankListBoxContainerStyle は次のようになります.....

<Style x:Key="BlankListBoxContainerStyle" TargetType="{x:Type ListBoxItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="FocusVisualStyle"
            Value="{x:Null}"/>
</Style>
于 2012-12-03T17:16:42.857 に答える
6

アプリケーションは SystemColors.HighlightBrushKey (およびその他のシステム キー) の値をオーバーライドします。これは、Win7 の既定のテーマ (Aero) と同様に、システム カラーを参照して前景色/背景色を定義するコントロールで機能します。
ただし、Win8 の既定のテーマ (Aero2) では、色の定義が異なります。したがって、オーバーライドは効果がありません。

システムカラーを使用するためにテーマは必須ではありません。彼らは Win7/Aero でたまたまそうしましたが、それはシステム カラーが適切であると見なされたからにすぎません。

お役に立てれば。

于 2012-08-22T21:12:35.057 に答える
4

フレームワークの互換性に関するドキュメントを読み直したところ、.NET 4 用にコンパイルして Windows 8 で実行する場合、実際には必要ないことがわかりました。

http://msdn.microsoft.com/en-us/library/system.windows.frameworkcompatibilitypreferences%28v=vs.110%29.aspx

しかし、Windows 7 にはなかった青色の背景がまだ残っていたので、リスト ボックスと同じようにスタイル設定されていないリスト ビューまで問題を突き止めました。要素の要素を選択する機能は実際には必要ないことがわかったので、リスト ビューを項目コントロールに変更することで問題が解決しました。

以下も参照してください。

http://connect.microsoft.com/VisualStudio/feedback/details/750655/selected-listboxitem-does-not-have-a-background-of-controlbrushkey-when-app-is-unfocused

于 2012-08-28T20:09:02.437 に答える
0

これはシステムに依存するデフォルトのテーマと呼ばれ、実際にそれを台無しにすることを意図していません。別のを設定することで、全体を上書きできますControl.Template

于 2012-08-17T14:45:23.200 に答える
0
<Style.Triggers>
                <Trigger Property="IsSelected" Value="true">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect Color="Red"
                              BlurRadius="0"
                              ShadowDepth="0" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
于 2014-02-19T21:56:37.240 に答える