2016-03-04 55 views
1

我有一個Windows API應用程序,它從API獲取數據,並將數據綁定到項目模板中。我希望項目模板有4個不同的背景。我想知道如何做到這一點。如何在Windows Phone應用程序的項目模板中設置一個堆棧面板的背景圖像

我的XAML:

<ListView.ItemTemplate> 
         <DataTemplate> 
          <Grid x:Name="listGrid" Margin="5,5,0,0" Height="130" > 
           <StackPanel x:Name="stack" Margin="0,0,0,0" Height="130" > 
            <StackPanel.Background> 
             <ImageBrush ImageSource="Assets/Current-Promotions-btn.png" /> 
            </StackPanel.Background> 

            <Grid Margin="10,0,0,0" Height="120"> 
             <Grid.ColumnDefinitions> 
              <ColumnDefinition Width="120"/> 
              <ColumnDefinition Width="*"/> 
             </Grid.ColumnDefinitions> 

             <Image Source="{Binding thumbnailImage}" Height="110" Width="110" Margin="0,7,0,5" VerticalAlignment="Center" Grid.Column="0" Stretch="UniformToFill" /> 

             <Grid x:Name="descStack" Margin="5,0,0,0" Grid.Column="1" Height="130"> 
              <TextBlock x:Name="pagTitle" Text="{Binding heading}" VerticalAlignment="Top" Margin="0,0,0,0" TextWrapping="NoWrap" FontSize="17" Foreground="White" FontWeight="Bold" FontFamily="/Fonts/Roboto-Bold.ttf#Roboto" Padding="10" LineHeight="18" MaxHeight="80" TextTrimming="WordEllipsis"/> 
              <TextBlock Text="{Binding shortDescription}" VerticalAlignment="Center" TextWrapping="WrapWholeWords" Margin="0,-20,0,0" FontSize="15" Foreground="#e2e2e2" FontWeight="Medium" FontFamily="/Fonts/Roboto-Bold.ttf#Roboto" Padding="10" LineHeight="16" MaxHeight="80" TextTrimming="WordEllipsis" LineStackingStrategy="BlockLineHeight"/>            
              <TextBlock x:Name="txtdis" Text="{Binding discount}" VerticalAlignment="Bottom" TextWrapping="WrapWholeWords" Margin="0,0,0,10" FontSize="14" Foreground="White" FontWeight="Bold" FontFamily="/Fonts/Roboto-Bold.ttf#Roboto" Padding="10"/> 
             </Grid> 
            </Grid> 
           </StackPanel> 
          </Grid> 
         </DataTemplate> 
        </ListView.ItemTemplate> 

任何形式的幫助表示讚賞....

回答

0

當然,你可以做到這一點。

有了這個XAML:

<ListView> 
     <ListView.ItemContainerStyleSelector> 
      <local:MyItemContainerStyleSelector /> 
     </ListView.ItemContainerStyleSelector> 
    </ListView> 

使用此代碼:

public class MyItemContainerStyleSelector : StyleSelector 
{ 
    protected override Style SelectStyleCore(object item, DependencyObject container) 
    { 
     var listView = ItemsControl.ItemsControlFromItemContainer(container) as ListView; 
     var index = listView.ItemContainerGenerator.IndexFromContainer(container); 
     var color = (index % 2 == 0) ? Colors.Red : Colors.Blue; 
     var setter = new Setter 
     { 
      Property = ListViewItem.BackgroundProperty, 
      Value = new SolidColorBrush(color) 
     }; 
     var style = new Style { TargetType = typeof(ListViewItem) }; 
     style.Setters.Add(setter); 
     return style; 
    } 
} 

顯然,你想介紹自己的邏輯:)

祝您好運!

相關問題