2016-03-30 6 views
1

Ich versuche, ein WPF ListView in einem Register TabControl anzuzeigen. Ich versuche folgendes zu erreichen: wenn ich auf eine Schaltfläche klicke, sollte eine neue TabItem erstellt werden und in dieser TabItem sollte eine ListView mit eigenem Inhalt angezeigt werden.WPF ListView in Registerkarten von TabControl mit anderem Inhalt anzeigen

Wenn ich also auf eine andere Schaltfläche klicke, sollte ein neuer Tab-Eintrag erstellt werden und der ListView in diesem zweiten Tab-Eintrag sollte einen anderen Inhalt anzeigen.

Ich setze DataContext, um Elemente in der Listenansicht anzuzeigen. Die Linien in der Listenansicht werden wie folgt angezeigt:

XAML:

<GridViewColumn Width="1500"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding myLine}"/> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

Die Listenansicht wie folgt angezeigt:

<TabControl x:Name="tabControl" Grid.Column="2" HorizontalAlignment="Left" Height="372" Margin="10,32,0,0" VerticalAlignment="Top" Width="894"> 
    <TabControl.ItemTemplate> 
     <DataTemplate DataType="{x:Type local:MyTab}"> 
      <TextBlock Text="{Binding _header}"/> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
     <DataTemplate DataType="{x:Type local:MyTab}"> 
      <ListView x:Name="myListView" ...></ListView> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

Wie kann ich verschiedene Registerkarten mit ihrem eigenen Inhalt anzeigen?

Antwort

0

Sie müssen die Liste der Registerkarten von Ihrem DataContext an TabControl.ItemsSource binden.

Und auf Ihrem DataContext haben Sie eine Eigenschaft namens Tabs, die eine Liste oder Sammlung Ihrer Datentypen ist;

public IList<MyTab> Tabs { get; private set; } 
+0

Kann ich denselben ListView verwenden, um andere Inhalte anzuzeigen und in der Lage zu sein, zwischen Tabs richtig zu wechseln? – DrGrid

+0

Nein, jede Registerkarte erhält aufgrund der Verwendung von DataTemplates eine eigene ListView. – Kolky

+0

Ich denke, das wird Probleme verursachen, weil meine ListView Datenvirtualisierung ist, und in XAML habe ich 1 ListView mit einem Namen, der festgelegt ist (myListView). Ist es möglich, eine einzelne Listenansicht zu verwenden, um verschiedene (Datei-) Inhalte anzuzeigen? – DrGrid