2009-12-18 57 views
3

是否可以在TabControlTabItem中打开另一个WindowTabItem中的新窗口?

我想这样做的原因是,如果我在我的TabControl中有5 TabItem s,那么编码所有这些TabItem s的一个Window文件将会变得非常大。所以如果可以给每个TabItem自己的Window文件,这将是很好的。

或者如何解决控制TabControlWindow文件变得太大的问题?

回答

4

您有几种选择:

  • 添加一个或多个resource dictionaries到您的应用程序,包含资源,模板和样式供你在你的标签举办的各种意见。如果你只需要保持视觉树的分离,这种方法就行得通。
  • 为每个视图创建user controls(使用自己的XAML和类文件),并为选项卡中的每个不同视图使用一个实例。这种方法允许您将特定的业务逻辑和相应的可视化树封装在一起。
  • 从代码生成一些UI。这个没有任何优势,除了让你XAML更小。而且.cs文件变得太大了,您可以将它们分成多个代码文件并使用部分类。 (刚在这一个完整:-)扔)
2

为每个TabItem制作一个UserControl。

7
<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> 

你的每个TabUserControl其实就是简单的用户控件,因为TabItem的可以承载任何控制它自己的孩子。

0

您可以像前面提到的那样使用UserControl。

但是你也可以使用Page控件。每个“窗口”将是一个页面,并且该选项卡中将包含一个NavigationControl。我以前使用过这种方法,它运行良好。我更喜欢UserControl路线,但都是有效的。

1

您还可以设置TabItem的内容等于你的窗口内容

例如:[WINDOWTYPE是你的窗口]

WindowsType oWindow = new WindowType(); 
TabItem oTab = new TabItem(); 
oTab.Content = oWindow.Content;