2

選択範囲が表示されないようにするには、ListViewItem の定義済みのスタイルをオーバーライドする必要があります。スタイル全体を自分のリソースにコピーして編集する方法を知っています。しかし、スタイル全体をコピーアンドペーストするよりも簡単な方法があるとは思えません。したがって、デフォルトの ListViewItem スタイルでは、選択に次のブラシが使用されていることがわかりました。

<UserControl.Resources>
    <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="Yellow" />
    <SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="Yellow" />
    <SolidColorBrush x:Key="ListViewItemSelectedForegroundThemeBrush" Color="Yellow" />
    <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBackgroundThemeBrush" Color="Yellow" />
    <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBorderThemeBrush" Color="Yellow" />
</UserControl.Resources>

注: これらのブラシをすべて UserControl に配置し、すべてを黄色に設定しました。しかし、悲しいことに、UI に黄色がありません。問題は、オーバーライドされたブラシをデフォルトのテンプレートに強制的に使用させるにはどうすればよいかということです。そして2番目の(オプションの)質問:私のやり方が間違っているのかもしれませんが、私の目標を達成するためのより良い方法はありますか?

4

4 に答える 4

4

Vasile がブラシをオーバーライドする必要があると述べたように、これはアプリ レベルで行う必要があります。私が知る限り、1 つのコントロールまたは 1 つのページのみを変更する場合は、コントロール全体をテンプレート化する必要があります。

興味がある場合は、C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT\Xaml\Design ですべてのブラシを見つけることができます。

これを App.xaml/resource ディクショナリに追加するリストビューの色をオーバーライドするには、ここにいくつかのコメントを追加して、どのブラシが何をするかを確認できるようにします。

ここに画像の説明を入力

ここに画像の説明を入力

            <ResourceDictionary x:Key="Default">

             <!--After selection - Background-->
            <SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="Yellow"></SolidColorBrush>

             <!--When pointer hovers over an item - Background-->
            <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="Red"></SolidColorBrush>

             <!--When the item is selected (first few milliseconds) - Background-->
            <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBackgroundThemeBrush" Color="Green"></SolidColorBrush>

             <!--When the item is selected (first few milliseconds) - Border-->
            <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBorderThemeBrush" Color="Black"></SolidColorBrush>

        </ResourceDictionary>
于 2013-02-14T10:29:57.087 に答える
4

次のように、App.xamlファイルでそれらをオーバーライドする必要があります(少なくともそれが私がした方法です):

<ResourceDictionary.ThemeDictionaries>
    <ResourceDictionary x:Key="Default">
        <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBorderThemeBrush" Color="Transparent" />
        <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="Transparent" />
        <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBackgroundThemeBrush" Color="Transparent" />
        <SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="Transparent" />
    </ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>

さらにカスタマイズが必要な場合 (私の場合、ListView 項目はいくつかの写真でした)、デフォルトのColor Controlsを変更するための非常に便利なリンクを次に示します。

于 2013-02-14T09:20:06.300 に答える
1

共有App.xamlのWindows 8.1ユニバーサルアプリでは、このコードを使用します

<Application
    x:Class="XXX.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XXX">

    <Application.Resources>
        <ResourceDictionary>
            <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="Transparent" />
        </ResourceDictionary>
    </Application.Resources>
</Application>
于 2014-05-28T08:35:39.203 に答える
0

私は以前にも同様のことを試みてきましたが、運がありませんでした。テンプレート全体を更新するだけでよいと思います。

于 2013-02-14T07:15:15.337 に答える