Hallo zusammen,
ich möchte in 3 TabItems ein und die selbe ListBox zur Auswahl haben, ItemsSource kann ich ja an eine Liste binden, aber ich muss immer einen anderen Namen vergeben.
<TabControl>
<TabItem>
<TabItem.Header>
...
</TabItem.Header>
<ListBox x:Name="lst_A" ItemsSource="{Binding Layouts}" />
</TabItem>
<TabItem>
<TabItem.Header>
...
</TabItem.Header>
<ListBox x:Name="lst_B" ItemsSource="{Binding Layouts}" />
</TabItem>
<TabItem>
<TabItem.Header>
...
</TabItem.Header>
<ListBox x:Name="lst_C" ItemsSource="{Binding Layouts}" />
</TabItem>
</TabControl>
Wie bekomme ich es hin das es eine Liste wäre die unter jedem TabItem sichtbar ist?
(Damit der Name der Listbox gleich bleiben kann)
Geht das?
Danke schon mal.
Gruß,
Gustl
Kannst du nicht einfach auf das TabControl verzichten bzw. die Liste ausserhalb anzeigen?
Das würde gehen, wäre aber unschön, da es auch noch zwei andere Reiter gibt wo ich die Liste eben nicht brauche...
Wenn das so nicht geht dann muss ich bei einem TabWechsel die Selektion gleich halten.
Ist halt auch unschön da ich den Code von der Liste 3x drin habe.
Du könntest hier mit einem DataTemplate arbeiten und in dein an dein TabControl eine Liste von ViewModels binden. Jedes der ViewModels stellt dann in sich über ein DataTemplate eine von dir definierte Listenansicht dar und enthält auch die Liste von Items die im DataTemplate an deine visuelle Liste gebunden wird.
Den Headernamen des Tabs kannst du ebenfalls aus dem ViewModel auslesen.
Hier ein snippet
<TabControl
ItemsSource="{Binding DetailsViewModels, Mode=OneWay}">
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:DetailViewModel}">
<ListBox ItemsSource="{Binding Layouts}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding DisplayTitle}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
Falls du noch weitere Tabs hast in denen anderes Zeug dargestellt werden muss so müsstest du einen DataTemplateSelector verwenden und pro unterschiedlichem ViewModelTyp dann ein eigenes DataTemplate schreiben.