时间:2017-02-08 15:40:46

标签: .net xaml listview uwp list-separator

我想在ListView的项目之间插入一个分隔符,如下图所示。

Sample

有两个问题:

  1. 如果我在ItemTemplate的项目底部添加(作为边框),则最后一项将有一个分隔符,但不应该。
  2. 如果我找到在ItemTemplate 之外添加分隔符的方法,我该如何将其与标签对齐?

2 个答案:

答案 0 :(得分:3)

您需要使用<button>One</button> <button>Two</button> <button>Three</button> 。首先,您需要创建两个DataTemplateSelector&#39>

例如:在一个简单的ItemsControl中,我想向您显示一个String列表,My Two DataTemplate&#39; s将如下所示。

DataTemplate

现在我创建一个<Page.Resources> <DataTemplate x:Name="AllItems"> <Border BorderBrush="{StaticResource SystemControlBackgroundBaseLowBrush}" BorderThickness="0,0,0,2"> <TextBlock Text="{Binding ''}" Padding="10" Margin="10,0" /> </Border> </DataTemplate> <DataTemplate x:Name="LastItems"> <TextBlock Text="{Binding ''}" Padding="10" Margin="10,0" /> </DataTemplate> </Page.Resources> 并检查我需要应用DataTemplateSelector的项目是否是最后一项。

DataTemplate

现在我的public class ItemsDataTemplateSelector: DataTemplateSelector { public DataTemplate AllItems { get; set; } public DataTemplate LastItems { get; set; } protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { DataTemplate _returnTemplate = new DataTemplate(); var itemsControl = ItemsControl.ItemsControlFromItemContainer(container); if (itemsControl.IndexFromContainer(container) == (itemsControl.ItemsSource as List<String>).Count-1) { _returnTemplate = LastItems; } else { _returnTemplate = AllItems; } return _returnTemplate; } } 实施将是

ItemsControl

以下是我如何将ItemsSource设置为ItemsControl

<ItemsControl x:Name="listView">  
    <ItemsControl.ItemTemplateSelector>  
        <local:ItemsDataTemplateSelector AllItems="{StaticResource AllItems}" LastItems="{StaticResource LastItems}" />  
    </ItemsControl.ItemTemplateSelector>  
</ItemsControl>

以下是您的输出。您可以看到最后一项没有List<String> items = new List<string>(); for (int i = 1; i <= 5; i++) { items.Add("Item " + i.ToString()); } listView.ItemsSource = items;

enter image description here

答案 1 :(得分:-1)

在listView中使用XML中的Divider属性。我希望它满足您的要求。例如,

在activity_main.xml中:

    <ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/buttn"
    android:divider="@color/Divider"
    android:dividerHeight="2dp"
    android:id="@+id/listview"/>

在color.xml中:

 <resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="Divider">#085411</color></resources>