2016-03-30 3 views
1

Я пытаюсь отобразить WPF ListView на вкладке TabControl. Я пытаюсь добиться следующего: если я нажму кнопку, то должен быть создан новый TabItem, и в этом TabItemListView должен быть показан с собственным контентом.WPF Display ListView в вкладках TabControl с различным контентом

Поэтому, если я нажму на другую кнопку, необходимо создать новый элемент табуляции, а ListView в этом втором элементе табуляции должен отобразить другое содержимое.

Я устанавливаю DataContext для отображения элементов в виде списка. Строки в списке отображаются следующим образом:

XAML:

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

элемент управления ListView отображается следующим образом:

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

Как я могу отобразить различные вкладки с их собственным содержанием?

ответ

0

Вам необходимо привязать свой список вкладок от вашего DataContext до TabControl.ItemsSource.

<TabControl ItemsSource="{Binding Tabs}"/> 

И на вашем DataContext имеет свойство Tabs, что представляет собой список или коллекция ваших типов данных;

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

Смогу ли я использовать тот же ListView для отображения различного контента и иметь возможность правильно переключаться между вкладками? – DrGrid

+0

Нет, каждая вкладка получит собственный ListView из-за использования DataTemplates. – Kolky

+0

Я думаю, что это вызовет проблемы, потому что мой ListView является виртуализацией данных, а в XAML у меня есть 1 ListView с именем, которое установлено (myListView). Можно ли использовать один список для отображения другого (файла) контента? – DrGrid