【问题标题】:Scrollbars in WPF Tab Item IssuesWPF 选项卡项问题中的滚动条
【发布时间】:2012-02-09 02:05:31
【问题描述】:


我有一个选项卡控件,它具有一整套可关闭的选项卡项,每个选项卡项都有一个带有可滚动部分的视图(每个视图都是相同的不同实例),我遇到的问题是,如果你在一个标签上滚动它的级联到所有其他标签,如果有人能告诉我如何阻止这种情况发生,我正在徘徊?
谢谢大家:)

【问题讨论】:

  • 什么是滚动的,一个文本框?可滚动的标签页中的控件是什么?

标签: wpf scrollbar tabcontrol


【解决方案1】:

如果您的TabControl 指定ContentTemplate,这是默认行为。TabControls 使用虚拟化,因此当您切换选项卡而不是每次都创建一个新选项卡时,它们将重新使用模板。

这意味着无论您在哪个选项卡上,都使用相同的ScrollViewer。您可以通过将 Loaded 事件添加到您的 ScrollViewer 来证明这一点,您会看到它只被调用一次。

解决此问题的一种方法是使用具有x:Shared="False" 的DataTemplate,因此它不会共享模板。我还没有测试过这是否有任何性能问题。

<DataTemplate x:Key="TestTemplate" x:Shared="False">
    <local:UserControl1 />
</DataTemplate>

<Style x:Key="TabItemStyle" TargetType="{x:Type TabItem}">
    <Setter Property="Header" Value="Test" />
    <Setter Property="ContentTemplate" Value="{StaticResource TestTemplate}" />
</Style>

...

<TabControl ItemsSource="{Binding SomeCollection}"
            ItemContainerStyle="{StaticResource TabItemStyle}" />

请注意,这似乎很麻烦...例如,我需要将ScrollViewer 放入UserControl 中,否则将无法正常工作。我还需要设置TabItem.ContentTemplate 而不是TabControl.ContentTemplate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2011-07-16
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多