在我们的Windows Phone项目中,我们有一个ListBox ItemTemplate。我们绑定一些数据的地方。在显示数据时,我们希望突出显示每个备用行。如下所示......有人可以帮忙,我怎么能做到这一点。
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>
我绑定此项数据源的项目列表就像这样
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 :(得分:0)
一个解决方案(可能不是最好的)可能是在您的Item类中为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();
这可能需要一些改进,但应该有效。