【问题标题】:Overriding default ItemsPanelTemplate in Silverlight 4?覆盖 Silverlight 4 中的默认 ItemsPanelTemplate?
【发布时间】:2011-04-06 19:11:51
【问题描述】:

我正在尝试覆盖 Silverlight 中 TabControl 的默认模板。我不想让选项卡在它们已满时环绕,而是让用户可以滚动它们,类似于 ListBox。然而,Silverlight 只是忽略了我在“ItemsPanelTemplate”中放入的所有内容并呈现默认值。以下是相关代码:

    <swc:TabControl Grid.Row="0" Grid.Column="1" Name="Tabs">
        <swc:TabControl.ItemsPanel>
            <ItemsPanelTemplate>
                <ScrollViewer>
                     <StackPanel Orientation="Horizontal" />
                </ScrollViewer>
            </ItemsPanelTemplate>
        </swc:TabControl.ItemsPanel>

即使我只是放入一个常规的 StackPanel,它仍然什么都不做。我将 Silverlight Toolkit 用于选项卡,因此我在网上找到的所有内容都仅适用于常规 WPF,不适用于 Silverlight。非常感谢大家的建议。

【问题讨论】:

  • 完全不指定ItemsPanel是否有效?
  • ScrollViewer 不是 Panel,它不会工作。您需要重新定义 TabControl 的 ControlTemplate。这是关于可滚动标签dansoltesz.com/post/2010/07/20/… 的帖子,但效果很糟糕。稍等片刻,我会发布正确的代码。
  • 因此,如果您对带有数据绑定和两个按钮(提供左右滚动)的工作 TabControl 真的很感兴趣,这里是链接: C# 代码:pastebin.com/Q0Dx3kAn 控件的 xaml:@987654323 @ 使用示例:pastebin.com/aL6t34R8。并且不要使用我之前评论中的控件,因为我的控件没有错误。过一段时间我会重构代码并写一篇博文。
  • 感谢 Vorrtex!这很有帮助。看了你的代码后,我的代码现在可以工作了。

标签: wpf xaml silverlight-4.0 tabcontrol itemspaneltemplate


【解决方案1】:

ItemsPanel 需要有一个 Panel 作为根元素。你有一个 ScrollViewer。如果要添加 ScrollViewer,则必须创建一个自定义 ControlTemplate,将 ItemsPresenter 与 ScrollViewer 一起包装。 ItemsPresenter 将显示 ItemsPanel。

您应该能够从 Silverlight Toolkit 源中获取默认样式和 ControlTemplate,并根据您的需要对其进行调整。然后将修改后的版本包含在您的应用程序资源中,或将其显式应用于各个 TabControl。

【讨论】:

  • 谢谢,事实证明你不仅需要一个Panel 作为root,你还需要一个TabPanel。现在可以使用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2020-03-22
  • 2013-05-13
  • 2011-12-20
  • 2020-07-12
相关资源
最近更新 更多