【问题标题】:WPF Display ListView in tabs of TabControl with different contentWPF在具有不同内容的TabControl选项卡中显示ListView
【发布时间】:2016-07-18 08:59:12
【问题描述】:

我正在尝试在 TabControl 的选项卡中显示 WPF ListView。我正在尝试实现以下目标:如果我单击一个按钮,则应创建一个新的 TabItem 并在其中显示 TabItem 一个 ListView 应显示其自己的内容。

因此,如果我单击另一个按钮,应该会创建一个新的选项卡项,并且第二个选项卡项中的 ListView 应该显示另一个内容。

我将DataContext 设置为在列表视图中显示项目。列表视图中的行显示如下:

XAML:

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

列表视图显示如下:

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

如何显示带有自己内容的各种选项卡?

【问题讨论】:

    标签: wpf xaml listview datatemplate tabcontrol


    【解决方案1】:

    您必须将您的选项卡列表从 DataContext 绑定到 TabControl.ItemsSource

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

    在您的 DataContext 上有一个名为 Tabs 的属性,它是您的数据类型的列表或集合;

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

    【讨论】:

    • 能不能用同一个ListView来显示不同的内容,并且能正确的切换标签页?
    • 不,每个 Tab 都会有自己的 ListView,因为您使用了 DataTemplates。
    • 我认为这会导致问题,因为我的 ListView 是数据虚拟化,并且在 XAML 中我有 1 个 ListView,其名称已设置 (myListView)。是否可以使用单个列表视图来显示不同的(文件)内容?
    • 我认为可以以编程方式创建一个新的ListView,然后设置一个在XAML中声明的ItemContainerStyle。所以每个ListView都将具有相同的特征.
    • @DrGrid 为什么你需要所有东西都在同一个命名的 ListView 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2022-11-29
    相关资源
    最近更新 更多