2017-06-02 2 views
1

Mein Problem ist folgendes:Bound Listenanzeigen enthalten Klassennamen nicht die Zeichenfolge

ich eine Klasse, die eine ObservableCollection von Saiten, die von den ausgewählten Kindern bevölkert wird.

Diese sollen in einer ListBox aufgelistet sein.

Die Strings sind jedoch nicht aufgelistet, sondern der Objekttyp in FilterList wird angezeigt.

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

Filterliste enthält die Klassen, die ListOfActiveFilters als Eigenschaft haben. Ich dachte, dass es so funktionieren würde, wie ich es gezeigt habe, aber es tut es nicht. Da habe ich auch andere gesehen.

Wenn ich eine Klasse mit einer einzigen Zeichenfolge-Eigenschaft als den Typ der Sammlung anstelle der Sammlung von Zeichenfolgen verwenden würde, die ich gerade habe, denke ich, dass es funktionieren würde.

Ich sehe einfach nicht den Punkt in der Erstellung einer Klasse, die eine Zeichenfolge-Eigenschaft nur so, dass ich den ContentPresenter oder TextBox an diese Eigenschaft binden kann.

Was mache ich falsch? Ich bin ziemlich neu in dem Thema.

Antwort

1

Ein einzelnes ListBox kann nur die Filter in einer einzigen ListOfActiveFilters Sammlung anzeigen. Sie könnten verschachtelte ItemsControls verwenden sie alle anzuzeigen:

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

Die andere Option ist Ihr Datenmodell zu ändern und alle Strings in einer einzigen Sammlung setzen. Sie könnten dann die ItemsSource Eigenschaft der ListBox direkt an diese binden. Aber ein ListBox selbst hat kein Konzept hierarchischer Daten.

+0

Ah okay, das wusste ich nicht. Vielen Dank – SireChicken

Verwandte Themen