私は普遍的なアプリケーションやXAMLには比較的新しいので、メインページにスタイルを適用しようとしています。これまでのところ、ListBoxItem
のスタイルを正しく定義しましたが、アイテムが選択されたときに背景の塗りつぶしの色を変更する方法が見つかりません。ListBoxItemが選択されている場合、どのようにプロパティを変更できますか?
WPFでは、イベントがトリガされたときにトリガを設定してアイテムのプロパティを変更するのは非常に簡単ですが、ユニバーサルアプリケーションではトリガは使用できません。
私の目標は、ListBoxItem
の背景プロパティをGrayに設定することですが、これを達成する方法が見つけられません。私はVisualStateManager
を使ってみましたが、どのように動作するのか分かりませんし、まだ動作しているVisual状態を何かに適用していません。
誰でもVisualStates
の使い方を説明できますか、これを行うための別の方法を提案することはできますか?ここに私のコードは、参考のために、これまでです:ここでは
<Application
x:Class="VSC_QC1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VSC_QC1"
RequestedTheme="Light">
<Application.Resources>
<Style x:Key="ListBoxStyle" TargetType="ListBox">
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="2" />
</Style>
<Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#00b300" Offset="0" />
<GradientStop Color="#107028" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>
は、コントロールテンプレートと(MainPage.xamlをで)ListBoxコントロール自体の私のコードは次のとおりです。
<ListBox
x:Name="LightSelector"
Grid.Column="2"
Grid.Row="0"
Width="300"
Style="{StaticResource ListBoxStyle}"
FontSize="30" Background="#FFC8C8C8"
VerticalAlignment="Top"
HorizontalAlignment="Center"
SelectionChanged="LightSelector_SelectionChanged">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ListViewItemPresenter
PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
SelectedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
SelectedPressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem>White flood</ListBoxItem>
<ListBoxItem>UV flood</ListBoxItem>
<ListBoxItem>IR flood</ListBoxItem>
<ListBoxItem>White oblique</ListBoxItem>
<ListBoxItem>IR oblique</ListBoxItem>
<ListBoxItem>Coaxial</ListBoxItem>
<ListBoxItem>Backlight panel</ListBoxItem>
</ListBox>
だから、私は視覚的な状態でデフォルトのテンプレートを使い、ちょうどフィットするように調整したいのですか? –
これはうまくいきました。白い斜線が選択されるとグレーになりますが、他のすべてはデフォルトの紫色になります –
これも知っていると便利ですhttp://stackoverflow.com/questions/19320208/change-background-color-of選択された項目のリストボックス?noredirect = 1&lq = 1 –