TabItem中的新窗口?

Pok*_*oku 4 c# wpf tabcontrol window tabitem

是否有可能打开另一个WindowTabControlTabItem

我想这样做的原因是,如果我有5 TabItem秒,我TabControl正在编写所有这些TabItem的一个Window文件,它们的关联动作会变得非常大.因此,如果可以为每个文件提供TabItem自己的Window文件,那就太好了.

或者你如何解决Window控制文件TabControl太大的问题?

Aka*_*ava 8

<Window ...
     xmlns:local="clr-namespace:MyNamespace"
     >
     <TabControl>
          <TabItem Header="FirstTab">
               <local:MyFirstTabUserControl/>  
          </TabItem>
          <TabItem Header="SecondTab">
               <local:MySecondTabUserControl/>  
          </TabItem>
          <TabItem Header="ThirdTab">
               <local:MyThirdTabUserControl/>  
          </TabItem>
     </TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)

您的每个TabUserControl实际上都是简单的UserControl,因为TabItem可以将任何控件托管为自己的子控件.


Fra*_*nov 5

您有多种选择:

  • 将一个或多个资源词典添加到您的应用程序,其中包含您在选项卡中托管的各种视图的模板和样式的资源。如果您只需要保持可视化树的分离,这种方法很有效。
  • 为每个视图创建用户控件(使用自己的 XAML 和类文件),并为选项卡中的每个不同视图使用一个实例。这种方法允许您将特定的业务逻辑和相应的可视化树封装在一起。
  • 从代码生成一些 UI。这个没有任何优势,除了 t 使您的 XAML 更小。如果您的 .cs 文件变得太大,您始终可以将它们拆分为多个代码文件并使用部分类。(为了完整起见,只好加入这个:-))


Emm*_*sis 5

您还可以将 TabItem Content 设置为等于您的 Window 内容

例如:[WindowType 是您的窗口]

WindowsType oWindow = new WindowType();
TabItem oTab = new TabItem();
oTab.Content = oWindow.Content;
Run Code Online (Sandbox Code Playgroud)