我有2个xaml文件:MainWindow.xaml和Subscreen.xaml。
我想将Mainscreen.xaml的TabControl下的Subscreen.xaml动态加载为TabItem。
每个视图都有一个ViewModel。
以下是测试代码:
[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为空。
动态加载的代码有什么问题吗? 预先感谢。