Ich bin relativ neu in universellen Apps und XAML, und ich versuche, Stile auf meiner Hauptseite anzuwenden. Bisher habe ich erfolgreich einen Stil für ListBoxItem
s definiert, aber ich finde keine Möglichkeit, die Hintergrundfarbe zu ändern, wenn ein Element ausgewählt wird.Wie kann ich die Eigenschaften eines ListboxItem ändern, wenn es ausgewählt ist?
Ich weiß, dass es in WPF sehr einfach ist, einen Auslöser zu setzen und die Eigenschaften des Elements zu ändern, wenn ein Ereignis ausgelöst wird, Trigger sind jedoch in Universal Apps nicht verfügbar.
Mein Ziel ist es, die Hintergrundeigenschaft von ListBoxItem
auf Grau zu setzen, wenn es ausgewählt ist, aber ich kann keinen Weg finden, dies zu erreichen. Ich habe versucht mit VisualStateManager
, aber ich bin mir nicht sicher, wie es funktioniert, und ich habe noch einen funktionierenden Visual State auf etwas anzuwenden.
Kann jemand erklären, wie man VisualStates
benutzt, oder schlägt sogar eine alternative Methode vor, um dies zu tun? Hier ist mein Code so weit als Referenz:
<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>
Hier ist mein Code für die List-Box selbst (in MainPage.xaml) mit der Steuerungsvorlage:
<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>
also, Sie möchten, dass ich die Standardvorlage mit visuellen Zuständen benutze und sie einfach so anpasse? –
Das hat funktioniert, der weiße schräge wird grau, wenn ausgewählt, aber alle anderen gehen standardmäßig violett –
ich fand auch gerade das, was nützlich ist zu wissen http://stackoverflow.com/questions/19320208/change-background-color-of -selected-item-in-listbox? noredirekt = 1 & lq = 1 –