相关疑难解决方法(0)

TabControl的TabItems共享相同的内容......不想要

以下示例xaml使每个选项卡项共享相同的TextBox.这是有道理的,在某种程度上我猜...但它是意想不到的行为,几乎感觉就像一个bug.我在文档中找不到任何解释行为的信息,或者如何正确解决这个问题.

<TabControl>
    <TabControl.Resources>
        <Style TargetType="TabItem">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBox />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
    <TabItem Name="tab1" />
    <TabItem Name="tab2" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)

当在tab1和tab2之间切换时,使用相同的TextBox,当我期望每个选项卡有一个新的TextBox时.我怎样才能得到后一种情况?

对TabItem进行子类化并将其内容默认设置为TextBox是一种方法,但我只是想确保没有我遗漏的东西.

编辑

我意识到为每个选项卡显式设置内容将解决问题,但选项卡将动态创建.我想使用内容模板,以便我可以通过数据绑定添加新选项卡,并使内容不共享,因为它会导致奇怪的行为.

也许使用TabControl的当前实现,没有声明方法来解决这个问题.在代码中设置内容非常简单,但在WPF中这样的事情总是感觉不对.对我来说,这似乎是TabControl的不合理优化; 对于不实用的情况,它至少应该是可选的.

wpf tabcontrol

10
推荐指数
1
解决办法
7881
查看次数

WPF:TabControl和动态TabItems

我正在尝试使用C#中的WPF为当前项目创建GUI。我希望有一个选项卡(在运行时动态创建),每个选项卡都应打开一个具有相同列标题但内容不同的表。

我知道我可以实现如下标签和表格:

<Grid>
    <TabControl  x:Name="tabControl"  TabStripPlacement="Left">
        <TabItem Header="Example 1" x:Name="tabItem" >
            <DataGrid ItemsSource="{Binding TagCollection.Tags}" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Tag" Binding="{Binding Tag}" />
                    <DataGridTextColumn Header="Description" Binding="{Binding Description}" />
                    <DataGridTextColumn Header="Value" Binding="{Binding Value}" />                                              
                </DataGrid.Columns>
            </DataGrid>
        </TabItem>
        <TabItem Header="Example 2" x:Name="tabItem1" >
            <DataGrid ItemsSource="{Binding TagCollection.Tags}" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Tag" Binding="{Binding Tag}" />
                    <DataGridTextColumn Header="Description" Binding="{Binding Description}" />
                    <DataGridTextColumn Header="Value" Binding="{Binding Value}" />
                </DataGrid.Columns>
            </DataGrid>
        </TabItem>

    </TabControl>

</Grid>
Run Code Online (Sandbox Code Playgroud)

我该如何生成带有代码的视图?我还不熟悉绑定之类的东西,所以也许有人可以给我看一个简短的例子?

谢谢KatZe

c# wpf tabcontrol tabitem

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

tabcontrol ×2

wpf ×2

c# ×1

tabitem ×1