tabcontrol - TabControl的TabItems共享相同内容 不需要

  显示原文与译文双语对照的内容
100 5

下面的示例xaml使每个选项卡项共享相同的文本框。在某种程度上,我猜。但这是意想不到的行为,几乎感觉像一个 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>

如果在tab1和tab2之间切换,则使用相同的文本框,当我希望每个标签都有一个新的文本框时。我怎样才能得到后一个案例?

在默认情况下,子类子类的子类化是一种方法,但是我只是想确保没有什么东西。

编辑

我意识到,为每个选项卡显式设置内容将会解决这个问题,但是要动态创建选项卡。我想使用内容模板,使我可以以通过数据绑定添加新选项卡,并使内容非共享。

也许使用TabControl的当前实现,没有一种声明性的方法来解决这个问题。在代码中设置内容非常简单,但是在WPF中这样做总是感觉错了。对我来说,这似乎是一个不对称的最优化;它至少应该是可选的,在不实际的情况下。

时间:原作者:0个回答

100 1

我怀疑有一种更好的方法来实现你想实现的任何操作,但我认为这将是( 会测试但我在 linux atm机上):

<TabControl>
 <TabControl.Resources>
 <Style TargetType="TabItem" x:Shared="False">
 <Setter Property="ContentTemplate">
 <Setter.Value>
 <DataTemplate>
 <TextBox/>
 </DataTemplate>
 </Setter.Value>
 </Setter>
 </Style>
 </TabControl.Resources>
 <TabItem Name="tab1"/>
 <TabItem Name="tab2"/>
</TabControl>
原作者:
74 2

如果定义了具有选项卡内容的usercontrol,它将工作。我创建了以下 usercontrol:

<UserControl x:Class="SO_Testing.TextBoxUC"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
 mc:Ignorable="d" 
 d:DesignHeight="300" d:DesignWidth="300">
 <Grid>
 <TextBox/>
 </Grid>
</UserControl>

然后,我修改了我的窗口 xaml,如下所示:

<Window x:Class="SO_Testing.MainWindow"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:local="clr-namespace:SO_Testing"
 Title="MainWindow" Height="350" Width="525">
 <Grid>
 <TabControl>
 <TabItem Name="tab1" Header="Test">
 <local:TextBoxUC/>
 </TabItem>
 <TabItem Name="tab2" Header="Test 2">
 <local:TextBoxUC/>
 </TabItem>
 </TabControl>
 </Grid>
</Window>

这可以能不是你想要的,但每个选项卡的布局只在一个位置定义。

原作者:
59 1

我有同样的问题,发现这篇文章解释了为什么会发生以及如何解决这个问题。这是链接,以防其他人遇到同样的问题:

http://www.codeproject.com/Articles/460989/WPF-TabControl-Turning-Off-Tab-Virtualization

原作者:
...