/ / WPF AlternationIndex zum Steuern der Sichtbarkeit eines ControlTemplate-Elements - wpf, xaml

WPF AlternationIndex zum Steuern der Sichtbarkeit eines ControlTemplate-Elements - wpf, xaml

Ich verwende ein ControlTemplate für meine ListBoxItemsfür eine bestimmte ListBox. Das ControlTemplate ist in einem Style definiert und enthält ein Rechteck, dessen Sichtbarkeit basierend auf dem AlternationIndex umgeschaltet werden muss. Obwohl ich sehe, wie AlternationIndex verwendet wird, um den Hintergrund des ListBoxItem direkt zu steuern, bin ich mir nicht sicher, wie ich den Auslöser verwende, um auf ein benanntes Element in meiner Steuerungsvorlage zu verweisen. Jede Eingabe ist erwünscht:

XAML-Auszug:

<Style x:Key="ListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid Height="84" Width="700">
<!--
TURN ME ON FOR EVERY EVEN NUMBERED LIST ITEM
-->
<Rectangle x:Name="_listItemBg" Width="700" Height="83" Opacity="0.12">
...

Ich habe Folgendes versucht, aber ohne Erfolg. Die richtige XAML-Syntax weicht mir aus:

<ControlTemplate.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Rectangle.Visibility" TargetName="_listItemBg" Value="Hidden" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Rectangle.Visibility" TargetName="_listItemBg" Value="Visible" />
</Trigger>

...

Antworten:

3 für die Antwort № 1

Vielleicht hast du vergessen zu setzen AlternationCount? In jedem Fall ist hier ein kleines, in sich geschlossenes Arbeitsbeispiel, das auf Ihrem Code basiert:

<Grid>
<Grid.Resources>
<PointCollection x:Key="sampleData">
<Point>1,2</Point>
<Point>3,4</Point>
<Point>5,6</Point>
</PointCollection>
</Grid.Resources>
<ListBox ItemsSource="{StaticResource sampleData}" AlternationCount="2">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid Height="84" Width="700">
<Rectangle x:Name="_listItemBg" Width="700" Height="83" Fill="Red" Opacity="0.12"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Rectangle.Visibility" TargetName="_listItemBg" Value="Hidden" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Rectangle.Visibility" TargetName="_listItemBg" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>