2017-06-02 20 views
1

私の問題は、以下の通りである。バウンド文字列リストを表示していない文字列

私が選択した子供達によって移入ます文字列、ののObservableCollectionを持つクラスを持っています。

ListBoxにリストされているはずです。

しかし、文字列は表示されず、FilterListのオブジェクトタイプが表示されます。

<ListBox Grid.Row="2" Grid.Column="0" 
      ItemsSource="{Binding FilterList}"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel IsItemsHost="True" 
          Orientation="Horizontal"/> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding ListOfActiveFilters}"> 
       <!--<ContentPresenter Content="{Binding ListOfActiveFilters.}"/>--> 
        <TextBlock Text="{Binding}" /> 
      </HierarchicalDataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

フィルタリストには、ListOfActiveFiltersをプロパティとして持つクラスが含まれています。 私はそれが私がそれを示したように動作すると思ったが、それはしない。 それは私が他人がそれをするのを見た方法でもあるからです。

私が今持っている文字列のコレクションではなく、コレクションのタイプとして単一の文字列プロパティを持つクラスを使用する場合、それはうまくいくと思います。

私はContentPresenterまたはTextBoxをそのプロパティにバインドできるように文字列プロパティを保持するクラスを作成することについて実際には分かりません。

私は間違っていますか?私はその話題に対してむしろ新しいです。

答えて

1

単一のListBoxは、単一のListOfActiveFiltersコレクションにのみフィルタを表示することができます。あなたはそれらをすべて表示するには、ネストされたItemsControlsを使用することができます。

<ItemsControl ItemsSource="{Binding FilterList}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <ListBox ItemsSource="{Binding ListOfActiveFilters}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding}" /> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

他のオプションは、データモデルを変更し、単一のコレクション内のすべての文字列を置くことです。 ListBoxItemsSourceプロパティを直接バインドすることができます。しかし、ListBox自体には階層的データの概念はありません。

+0

ああ、私はそれを知らなかった。 ありがとう – SireChicken

関連する問題