在显示项目方式之间,使用2个项目进行交替



在Windows Phone Project IM上正在处理的我需要一个页面,该页面具有同一班级的项目列表,它应该显示为

之类的内容

图像 - 文字 文字 - 图像 图像 - 文字 文字 - 图像 图像 - 文字 文字 - 图像

<ScrollViewer Name="NoticiasScroll" Grid.Row="1" Margin="0,38,0,0">
        <ItemsControl x:Name="items" Height="653">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Height="218" VerticalAlignment="Top" Background="White" Width="440" Margin="0,0,0,5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Image Name="NewsImg" Source="/Assets/Images/pipa.png" Stretch="Fill" Grid.Column="0"/>
                        <Grid Grid.Column="2">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*" />
                                <RowDefinition Height="3*" />
                            </Grid.RowDefinitions>
                            <TextBlock TextAlignment="Right" Text="{Binding titulo}"  Foreground="Black" VerticalAlignment="Top" Height="39" Width="200" Margin="0,10,10,0" FontSize="28" FontFamily="Helvetica" HorizontalAlignment="Right"/>
                            <TextBlock TextAlignment="Right" Grid.Row="1" Text="{Binding texto}" Foreground="Black" FontFamily="Helvetica" FontSize="18" TextWrapping="Wrap" Margin="22,0,8,0" Width="190"/>
                        </Grid>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

    </ScrollViewer>

现在我有这个,但是这样所有项目都以相同的格式出现。我该如何做,以便它们在两种格式之间交替?

您可以扩展与具有2个可见性属性的ItemScontrol绑定的类。

public class MyItem
{
    public Visibility ShowEven { get; set; }
    public Visibility ShowOdd { get; set; }
    public string Titulo { get; set; }
    public string Texto { get; set; }
}

设置交替的可见性:

for (int i = 0; i < myItems.Count; i++)
{
    bool isEven = i % 2 == 0;
    myItems[i].ShowEven = isEven ? Visibility.Visible : Visibility.Collapsed;
    myItems[i].ShowOdd = isEven ? Visibility.Collapsed : Visibility.Visible;
}
items.ItemsSource = myItems;

在您的ItemTemplate内使用2个网格,这些网格绑定到可见性属性。

<ItemsControl Name="items">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid Visibility="{Binding ShowEven}" Background="Blue">
                        <Image />
                        <Image />
                    </Grid>
                    <Grid Visibility="{Binding ShowOdd}" Background="Red">
                        <TextBlock />
                        <TextBlock />
                    </Grid>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

最新更新