Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使WPF选项卡控件在Windows窗体(默认)中显示为MultiLine=false_Wpf_Xaml_Tabcontrol - Fatal编程技术网

如何使WPF选项卡控件在Windows窗体(默认)中显示为MultiLine=false

如何使WPF选项卡控件在Windows窗体(默认)中显示为MultiLine=false,wpf,xaml,tabcontrol,Wpf,Xaml,Tabcontrol,在Windows窗体中,选项卡控件的默认行为是,如果选项卡占用太多空间(MultiLine=false),则会将其溢出到可滚动区域 在WPF中实现这种行为的最佳方法是什么 更新 我试图用TabControl.ItemsPanel找到一个解决方案,但似乎我在那里放的任何东西都被完全忽略了,因此,出于这个原因,我费了很大的劲,从TabControl.Template开始,这让人难以置信,如果它是正确的方法,我们必须这样做 我对这个问题的初步解决方案是这样的,远远不够完整 <TabControl

在Windows窗体中,选项卡控件的默认行为是,如果选项卡占用太多空间(MultiLine=false),则会将其溢出到可滚动区域

在WPF中实现这种行为的最佳方法是什么

更新

我试图用
TabControl.ItemsPanel
找到一个解决方案,但似乎我在那里放的任何东西都被完全忽略了,因此,出于这个原因,我费了很大的劲,从
TabControl.Template
开始,这让人难以置信,如果它是正确的方法,我们必须这样做

我对这个问题的初步解决方案是这样的,远远不够完整

<TabControl>
  <TabControl.Template>
    <ControlTemplate TargetType="{x:Type TabControl}">
      <DockPanel>
        <ScrollViewer DockPanel.Dock="Top"
                      HorizontalScrollBarVisibility="Auto"
                      VerticalScrollBarVisibility="Disabled">
          <StackPanel Orientation="Horizontal" IsItemsHost="True" />
        </ScrollViewer>
        <ContentPresenter ContentSource="SelectedContent" />
      </DockPanel>
    </ControlTemplate>
  </TabControl.Template>
  <TabItem Header="One">First</TabItem>
  <TabItem Header="Two">Second</TabItem>
  <TabItem Header="Three">Third</TabItem>
  <TabItem Header="Four">Fourth</TabItem>
  <TabItem Header="Five">Fifth</TabItem>
</TabControl>

弗斯特
第二
第三
第四
第五

最简单的选项是在选项卡控件上设置ItemsPanelTemplate。我认为默认值是WrapPanel,因此是多行行为。 例如,将其更改为StackPanel,并可能添加一个ScrollViewer

类似这样的内容(只需在不使用VS的情况下编写此代码)



希望这有点帮助…

替换模板的解决方案似乎是最好的方法。TabItems的默认面板是一个TabPanel,我看不到任何类似于“应换行”属性的内容

本文档包含一个用不同的TabPanel替换TabControl模板的示例:


几年前我也遇到过同样的问题,我的解决方案是限制页眉和包含页眉的面板的大小,当然你需要像开始时那样制作自己的模板,而且我还需要实现一些滚动支持,所以我在滚动查看器的左右两侧放置了两个重复按钮

我的灵感来自于wpf中名为IE tabs的代码项目。
它与wpf一样古老,效果很好

在制作选项卡控件时,选项卡沿左侧垂直堆叠,我为您找到了以下解决方案:


令人印象深刻的东西

我知道这是一篇比较老的帖子,但如果其他人在互联网上搜索这篇文章,我想补充一点


如果将tabpanel的宽度设置为更大的值(假设这不是允许用户继续在其中添加其他选项卡的tabpanel)。如果您让用户向选项卡面板添加新选项卡,则需要添加一个滚动条。

Hi ppx,这与我采取的方法几乎相同,虽然我在模板中添加的任何内容都不会产生影响,但结果仍然相同,因此现在我决定尝试替换整个TabControl模板,然而,这并不是我想要做的,使用ItemsPanelTemplate肯定有某种更简单的解决方案。我将在一秒钟内发布到目前为止我一直在尝试的内容。我刚刚意识到你发布了我刚刚发现的同一个链接,这是一篇很棒的文章,感谢你的回答,但愿我能在三月份看到:)
<TabControl>
  <TabControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"/>
    </ItemsPanelTemplate>
  </TabControl.ItemsPanel>
</TabControl>