我對給定ListBox的ListBoxItems使用ControlTemplate。 ControlTemplate在Style中定義,幷包含一個Rectangle,其可見性需要根據AlternationIndex進行切換。雖然我看到如何使用AlternationIndex直接控制ListBoxItem的背景,但我不確定如何使用觸發器來引用控件模板中的命名項。任何輸入讚賞:WPF AlternationIndex來控制ControlTemplate項目的可見性
XAML摘錄:
<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">
...
我曾嘗試以下,但無濟於事。正確的XAML語法迴避我:
<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>
...
這可能是因爲你明確地設置在矩形的定義能見度=「可見」。嘗試刪除它,讓風格設置者來照顧它。 – 2011-05-02 00:26:08
謝謝,但似乎並不是這樣。我已經更新了觸發器以包含TargetName屬性,但儘管在輸出中看不到任何綁定錯誤,但它似乎不起作用。上面的觸發器和矩形已經更新,以反映這個最新的嘗試。 – 2011-05-02 00:42:44
根據你的評論,馬特,似乎我可能需要兩個互補的觸發器 - 一個隱藏矩形和一個顯示它。我更新了XAML。可悲的是,這也行不通。 – 2011-05-02 01:15:50