在UWP中设置ListView样式

时间:2016-07-21 13:03:55

标签: xaml uwp uwp-xaml

我在stackoverflow上发现了this问题+我的问题的答案,但对我来说还不完全清楚在哪里更改

ListViewItemPresenter

我尝试了很多东西,但似乎我无法自己找到它:(

以下是此框架的XAML代码:

<Page.Resources>
    <DataTemplate x:Key="ItemListDataTemplate" x:DataType="data:Item">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
            <Image Name="image" Source="{x:Bind CoverImage}" HorizontalAlignment="Center" Width="150" />
            <StackPanel Margin="20,20,0,0">
                <TextBlock Text="{x:Bind Name}" HorizontalAlignment="Left" FontSize="16" Name="NameTextBlock"/>
                <TextBlock Text="{x:Bind Description}" HorizontalAlignment="Left" FontSize="10" Name="DescriptionTextBlock"/>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{x:Bind Price}" HorizontalAlignment="Left" FontSize="26" Name="PriceTextBlock"/>
                    <TextBlock Text="€" FontSize="26" Name="Currency" Margin="5,0,0,0"/>
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView ItemsSource="{x:Bind Items}"
              ScrollViewer.VerticalScrollBarVisibility="Hidden"
              ItemClick="ListView_ItemClick" 
              IsItemClickEnabled="True" 
              ItemTemplate="{StaticResource ItemListDataTemplate}"
              >
    </ListView>
</Grid>

有人可以帮助我吗?非常感谢你的时间!

2 个答案:

答案 0 :(得分:1)

您可以通过两种方式在页面中修改ListViewItemPresenter

  1. 您可以从here复制XAML模板(默认样式下面的第一个XAML代码块)。将其添加到您的Page.ResourcesListViewItemPresenter位于这些XAML代码中,您可以编辑其属性,此样式将应用于此页面的ListView的所有项目。 注意:请勿将x:Key添加到此样式。

  2. 在您的网页中添加ListViewItem控件,如下所示:

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListViewItem></ListViewItem>
    </Grid>
    

    文档大纲 - &gt;选择ListViewItem-&gt;编辑模板 - &gt;编辑副本: enter image description here

  3. 删除生成的样式资源的x:Key属性,以便此样式将应用于所有ListViewItem。然后,您可以编辑生成的XAML资源中的ListViewItemPresenter

答案 1 :(得分:0)

只需在Listview中添加DataTemplate即可。

将它放在ItemTemplate属性中。

   <ListView ItemsSource="{x:Bind Items}"
        ScrollViewer.VerticalScrollBarVisibility="Hidden"
        ItemClick="ListView_ItemClick" 
        IsItemClickEnabled="True" >
   <ListView.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
            <Image Name="image" Source="{x:Bind CoverImage}" HorizontalAlignment="Center" Width="150" />
            <StackPanel Margin="20,20,0,0">
                <TextBlock Text="{x:Bind Name}" HorizontalAlignment="Left" FontSize="16" Name="NameTextBlock"/>
                <TextBlock Text="{x:Bind Description}" HorizontalAlignment="Left" FontSize="10" Name="DescriptionTextBlock"/>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{x:Bind Price}" HorizontalAlignment="Left" FontSize="26" Name="PriceTextBlock"/>
                    <TextBlock Text="€" FontSize="26" Name="Currency" Margin="5,0,0,0"/>
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </DataTemplate>     
  </ListView.ItemTemplate>

</ListView>