覆盖Silverlight 4中的默认ItemsPanelTemplate?

时间:2011-04-06 19:11:51

标签: wpf xaml silverlight-4.0 tabcontrol itemspaneltemplate

我试图在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。非常感谢你的建议。

1 个答案:

答案 0 :(得分:2)

ItemsPanel需要在其中包含一个Panel作为根元素。你有一个ScrollViewer。如果要添加ScrollViewer,则必须创建一个自定义ControlTemplate,它使用ScrollViewer包装ItemsPresenter。 ItemsPresenter将显示ItemsPanel。

您应该能够从Silverlight Toolkit源获取默认的Style和ControlTemplate,并根据您的需要进行调整。然后在您的应用程序资源中包含您的修改版本,或者将其明确应用于单个TabControls。