0

在我們的Windows Phone項目中,我們有一個ListBox ItemTemplate。我們在哪裏綁定一些數據。在顯示數據時,我們希望每個備用行都高亮顯示。像下面...有人可以幫助,我怎麼能做到這一點。ListBox項目模板中的Alternate RowStyle:Windows Phone

ROW1

行2

ROW3

ROW4

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
     <StackPanel> 
      <TextBlock Text="{Binding}" Foreground="Black" FontSize="32" FontWeight="SemiBold" FontFamily="Calibri" HorizontalAlignment="Stretch"></TextBlock> 
      <HyperlinkButton xml:space="preserve" Foreground="Black" FontSize="4"></HyperlinkButton> 
     </StackPanel>        
     </Grid>        
    </DataTemplate> 
</ListBox.ItemTemplate> 

的項目列表,我結合這個數據酸CE出來是這樣

public static readonly IList<String> Metrics = 
      new ReadOnlyCollection<string> 
          (new List<String> { 
                "ATM not working", 
                "Store out of business", 
                "ATM not there", 
                "Wrong store Address", 
                "Wrong store Name", 
                "Wrong ATM features Listed" 
               }); 

回答

0

一個解決方案(可能不是最好的)可能是使在BackgroundBrush您的項目類的屬性,那麼你可以將任何畫筆分配給您的背景:

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid Background={Binding BackBrush}> 
     <StackPanel> 
      <TextBlock Text="{Binding Text}" Foreground="Black" FontSize="32" FontWeight="SemiBold" FontFamily="Calibri" HorizontalAlignment="Stretch"></TextBlock> 
      <HyperlinkButton xml:space="preserve" Foreground="Black" FontSize="4"></HyperlinkButton> 
     </StackPanel> 
     </Grid> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

那麼你的項目類可以是這樣的:

public class Item 
{ 
    public string Text { get; set; } 
    public SolidColorBrush BackBrush { get; set; } 
} 

和一個例子項目:

yourItemSource.Add(new Item { Text = "First", BackBrush = (App.Current as App).Resources["PhoneAccentBrush"] as SolidColorBrush}); 

當你有一個ReadOnlyCollection你可以讓你的ItemsSource這樣的:

myList.ItemsSource = Metrics.Select((a, b) => new Item { Text = a, BackBrush = b % 2 == 0 ? (App.Current as App).Resources["PhoneAccentBrush"] as SolidColorBrush : new SolidColorBrush(Windows.UI.Colors.Transparent) }).ToList(); 

這可能需要一些改進,但應該工作。

+0

謝謝我在問題中添加了我的Itemsource,我綁定到了Grid。你能幫我怎麼準備Metrics參數作爲itemsource。 – Subhamoy

+0

@Subhamoy我已經添加了一個可能的解決方案,您可以如何將您的'Metrics'與BackgroundBrush一起分配。不要忘記添加'使用System.Linq' – Romasz