2017-02-08 12 views
2

ListViewの項目の間にセパレータを挿入したいと思います(下の画像のように)。アイテム間のリストビューセパレータ

Sample

2つの問題があります。

  1. 私はItemTemplate内の項目の下にある(ボーダーとして)それを追加した場合、最後の項目は、セパレータを持つことになりますし、それが必要でない。
  2. ItemTemplateの外側にセパレータを追加する方法が見つかった場合は、どのようにラベルに揃えますか?

答えて

3

これにはDataTemplateSelectorを使用する必要があります。最初に作成する必要がありますDataTemplate

例:Stringのリストを表示したい単純なItemsControlでは、My Two 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を適用する必要がある項目は、最終1であるかどうか確認してください。

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実装はここ

<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; 

をItemsControlにするためのItemsSourceを設定する方法で、あなたの出力です。あなたは最後の項目は質問がUWPについてですBorder

enter image description here

+0

しかし、これはほとんど再利用できません。 – SuperJMN

-1

listView.IにおけるXMLでの使用分周器の属性がactivity_main.xmlで

、それはあなたのrequirment.For例を満たし願っています:color.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"/> 

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

を持っていません見ることができます。 Androidでない – AVK

関連する問題