以下示例 xaml 使每个选项卡项共享相同的 TextBox。我想,在某种程度上,这是有道理的……但这是意想不到的行为,几乎感觉像是一个错误。我在文档中找不到任何解释该行为或如何正确解决该行为的信息。
<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 之间切换时,使用相同的 TextBox,而我希望每个选项卡都有一个新的 TextBox。我怎样才能得到后一种情况?
子类化 TabItem 并默认将其内容设置为 TextBox 是一种方法,但我只是想确保没有遗漏的内容。
Edit
我意识到为每个选项卡显式设置内容可以解决问题,但选项卡是动态创建的。我想使用内容模板,以便我可以通过数据绑定添加新选项卡,并取消共享内容,因为它会导致奇怪的行为。
也许在 TabControl 的当前实现中,没有声明性方法来解决这个问题。在代码中设置内容非常简单,但在 WPF 中这样的事情总是感觉不对。对我来说,这似乎是对 TabControl 的不合理优化;对于不切实际的情况,它至少应该是可选的。
我怀疑有一种更好的方法来实现你想要实现的目标,但我认为这会起作用(会测试,但我在 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)