5
我有一个ListBox。现在我想用这种方式编写一个DataTemplate,其中第一个项目将具有红色背景和其他项目的白色背景。我想我需要编写一个DataTrigger,但我不知道如何确定DataTemplate应用于第一个项目。如何从DataTemplate确定当前ListBox项目的索引?
我有一个ListBox。现在我想用这种方式编写一个DataTemplate,其中第一个项目将具有红色背景和其他项目的白色背景。我想我需要编写一个DataTrigger,但我不知道如何确定DataTemplate应用于第一个项目。如何从DataTemplate确定当前ListBox项目的索引?
项目控件具有使用样式对
交替计数看看here:
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="LightBlue"></Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="LightGreen"></Setter>
</Trigger>
</Style.Triggers>
</Style>
享受!
这是一个很棒的功能,谢谢你的提供。但我只需要** **第一项有红色背景,而不是每个项目其中(itemIndex%AlternationCount)== 0.当然,我可以将AlternationCount绑定到ItemsSource.Count,但没有任何更好的方法来做这个? – levanovd 2009-11-15 11:24:28
你的轮廓听起来可以接受,它全部在xaml中。它完成了工作,你可以继续做更好的事情。别人可能会想出更优雅的解决方案。 你可以做第一个绑定绑定到当前项目和第二个祖先绑定,绑定到列表框的itemssource的多重绑定。那么在你的转换器中,你可以检查该项目的索引是什么。但上面的解决方案都是在xaml中。我总是喜欢可读性。它在xaml中显而易见,不会锁定在转换器中 – 2009-11-15 11:52:48
无需将AlternationCount绑定到ItemsSource.Count:只需将它设置为XAML中的Int32.MaxValue即可。 (我更喜欢使用“{x:Static sys:Int32.Maxvalue}”的AlternationCount =“2147483647”,因为它更快,大多数程序员可以识别2^31-1)。 – 2009-11-16 08:10:05