Wpf 为什么我的TabControl忽略了我的ItemsPanelTemplate?

Wpf 为什么我的TabControl忽略了我的ItemsPanelTemplate?,wpf,tabcontrol,itemspanel,itemspaneltemplate,Wpf,Tabcontrol,Itemspanel,Itemspaneltemplate,我在其他控件上使用了ItemsPanelTemplate,例如ListBox,因此我认为对选项卡控件执行同样的操作会很简单 显然,我遗漏了一些内容,TabControl完全忽略了我在ItemsPanelTemplate中放置的内容 我的xaml看起来有点像这样: <TabControl TabStripPlacement="Right" ItemsSource="{Binding Components}"> <TabControl.ItemsPanel>

我在其他控件上使用了
ItemsPanelTemplate
,例如
ListBox
,因此我认为对
选项卡控件
执行同样的操作会很简单

显然,我遗漏了一些内容,
TabControl
完全忽略了我在
ItemsPanelTemplate
中放置的内容

我的xaml看起来有点像这样:

<TabControl TabStripPlacement="Right" ItemsSource="{Binding Components}">
     <TabControl.ItemsPanel>
          <ItemsPanelTemplate>
               <WrapPanel />
          </ItemsPanelTemplate>
     </TabControl.ItemsPanel>
</TabControl>


我已尝试将
WrapPanel
替换为
UniformGrid
,以查看是否存在差异,其行为是否相同。我确实有一个
控制模板
用于
选项卡项
,但我尝试将其删除,但没有任何区别,因此我认为这不会影响我的问题。

您可能想覆盖
模板
,而不是
项目span

您可以覆盖
TabControl.ItemTemplate
(或
TabItem.Template
)以更改选项卡顶部的外观,
TabControl.ContentTemplate
以更改用于选项卡内容的模板,或
TabControl.Template
以更改选项卡控件的整体模板


我甚至不知道TabControl有一个ItemsPanel。我只在ItemsControl中使用过它,其中ItemsPanel影响集合中包含项的控件类型。如果TabControl具有该属性,我想这只是因为它从某个基类继承了它

我实际上已经在使用TabControl.ItemTemplate来更改选项卡的外观(我刚刚发布了一个超级简单的xaml),但我真正想做的是将所有选项卡都包含在一个scrollviewer中,因为我有太多的选项卡无法显示,而它们正在从屏幕上消失的情况。@townsean我覆盖了
TabControl.Template
。将
IsItemsHost=“True”
用于您希望顶部选项卡位于的任何位置(例如
),并将
用于您希望当前所选选项卡内容位于的任何位置go@Rachel:正确,TabControl继承自ItemsControl,后者包含ItemsPanel属性。TabControl将其设置为TabPanel的一种类型。试图将其更改为WrapPanel的用户破坏了TabControl,因为该控件不是设计用于WrapPanel的,而是一个TabPanel(或从它派生的类)。当我设置ContentSource=“SelectedContent”时,我得到消息:无法绑定ContentPresenter的属性,因为类型“System.Windows.Controls.Control”上没有名为“SelectedContent”的属性。“我将ContentPresenter放在StackPanel中,StackPanel位于TabControl的ControlTemplate中。ControlTemplates是我的致命弱点@@townsean请确保您的ControlTemplate已定义TargetType,否则它将默认为通用控件模板
将ItemsPanel从TabPanel替换为WrapPanel有点奇怪。。。这样做没有意义。我的最终目标不是在那里使用包装纸。我试过了,大部分时间都在想为什么它不能像我想象的那样工作。