C#とXAMLを使用してWindows 10アプリで作業しています。 ListViewがあり、選択したアイテムのデフォルトのHighLight色を変更したい。私は多くのコード例を見ました( this など)が、すべてWP8またはWin8用に設計されています。
一般に、有用なドキュメントが見つからないため、コントロールのデフォルトのテーマを変更するのに問題があります。ハイライトの色について誰かが私を助けてくれたり、良いドキュメントを勧めてくれたら素晴らしいと思います。
実際には、スタイリングプロパティを検出するより良い方法は、Blendを使用することです。
まず、Blendでページを開きます。次に、ListView
を右クリックして、
追加テンプレートの編集>生成されたアイテムコンテナの編集(ItemContainerStyle)>コピーの編集。
名前を付けて[〜#〜] ok [〜#〜]を押します。
これで、ListViewItem
sの完全な組み込みスタイルが生成されました。ここで、外観、アニメーション、およびその他の視覚的動作に関するすべての情報を見つけることができます。
このコードを見てください-
<ListViewItemPresenter CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
ContentMargin="{TemplateBinding Padding}"
CheckMode="Inline"
ContentTransitions="{TemplateBinding ContentTransitions}"
CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
SelectionCheckMarkVisualEnabled="True"
SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
行SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"
?を参照してくださいここで、独自の色を適用できます。 Brush
ではなくColor
型である必要があることに注意してください。
XAMLを使用したくない場合は、c#を使用してこれらの設定を変更する(私の意見では)さらに簡単な方法があります。
Application.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red);
Application.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red);
これにより、アイテムを論理的にカスタマイズできます。
これは、リソースをオーバーライドすることでXAMLで実現できます。
<ListView ...>
<ListView.Resources>
<SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#FF0000" />
<SolidColorBrush x:Key="ListViewItemBackgroundSelectedPointerOver" Color="#FF0000" />
</ListView.Resources>
</ListView>
Bastecklein's Answerを拡張します。このメソッドをUWPプロジェクトで機能させるには、アプリケーションではなくアプリを使用します。最初のフレームをロードするときにApp.xaml.csでこのコードを使用するか、影響するページの背後のコードにリソースの色を設定するだけです。
App.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red);
App.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red);