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