在TabItem中打开新窗口?

6

TabControlTabItem中是否可以打开另一个Window

我想这样做的原因是,如果我在TabControl中有5个TabItem,那么我编写所有这些TabItem及其相关操作的Window文件将会变得非常大。因此,如果每个TabItem都可以拥有自己的Window文件,那将会很好。

或者你如何解决控制TabControlWindow文件过大的问题?

5个回答

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>

每个TabUserControl实际上都是一个简单的UserControl,因为TabItem可以作为其自己的子控件托管任何控件。


5
你还可以将TabItem内容设置为与Window内容相同。
例如:[WindowType是你的窗口]
WindowsType oWindow = new WindowType();
TabItem oTab = new TabItem();
oTab.Content = oWindow.Content;

5

您有几个选择:

  • 向应用程序添加一个或多个资源字典,其中包含用于托管选项卡中的各种视图的模板和样式。如果您只需要维护可视树的分离,则此方法非常有效。
  • 为每个视图创建用户控件(带有自己的XAML和类文件),并为选项卡中的每个不同视图使用一个实例。这种方法允许您将特定业务逻辑和相应的可视树封装在一起。
  • 从代码生成一些UI。除了使XAML更小之外,这没有任何优点。如果您的.cs文件变得太大,您可以将它们拆分成多个代码文件并使用部分类。(只是为了完整性而加入此内容 :-))

2
为每个TabItem创建一个用户控件。

0

你可以像之前提到的那样使用UserControl。

但是你也可以使用Page控件。每个“窗口”都将是一个页面,选项卡中将有一个NavigationControl。我以前使用过这种方法,效果很好。我更喜欢使用UserControl路线,但两种方法都是有效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接