动态加载TabItem

时间:2018-07-10 08:45:15

标签: wpf xaml

我有2个xaml文件:MainWindow.xaml和Subscreen.xaml。

我想将Mainscreen.xaml的TabControl下的Subscreen.xaml动态加载为TabItem。

每个视图都有一个ViewModel。

  • MainWindow.xaml:MainViewModel
  • SubScreen.xaml:SubViewModel

以下是测试代码:

[TestMethod]
public void MyTest2()
{
    // Arrange

    // Initilize a subVM of CMSEditorViewModel type
    var subVM = new SubViewModel();

    // Initialize a mainVM of CMSEditorMainViewModel type
    var mainVM = new MainViewModel();

    // Initialize a MainWindow of DynamicCMS.Exe.CMSEditor
    var mainWindow = new MyEditor.MainWindow();
    mainWindow.DataContext = mainVM;


    ContentPresenter presenter = new ContentPresenter();
    using (var stream = System.IO.File.OpenRead(CmsPath.DirViewWithBS + "Subscreen.xaml"))
    {
        DataTemplate template = XamlReader.Load(stream) as DataTemplate;
        presenter.ContentTemplate = template;
        presenter.Content = subVM;
    }

    // Create a TabItem of TabControl                
    TabItem item = new TabItem();
    item.Header = "Tab1";
    item.Content = presenter;
    item.Name = "tab1";

    // Get "mainTabControl" TabControl from MainWindow
    CustomTabControl tab = CmsUtil.GetControl((Visual)mainWindow.Content, "mainTabControl") as CustomTabControl;

    // Add TabItem to TabControl
    tab.Items.Add(item);

    // Act
    CustomTabControl customTabControlEditor = (CustomTabControl)CmsUtil.GetControl((Visual)mainWindow.Content, "EditTabControl");

    // Assert
    Assert.IsNotNull(customTabControlEditor);
}

在MainWindow.xaml中定义了“ mainTabControl”->我可以得到这个“ mainTabControl” TabControl。

“ EditTabControl”在Subscreen.xaml中定义->我无法获得此“ EditTabControl” TabControl-> customTabControlEditor为空。

动态加载的代码有什么问题吗? 预先感谢。

0 个答案:

没有答案