Wpf 动态加载选项卡项
我有2个xaml文件:MainWindow.xaml和Subscreen.xaml 我想将Subscreen.xaml作为TabItem动态加载到MainWindow.xaml的TabControl下 每个视图都有一个ViewModelWpf 动态加载选项卡项,wpf,xaml,Wpf,Xaml,我有2个xaml文件:MainWindow.xaml和Subscreen.xaml 我想将Subscreen.xaml作为TabItem动态加载到MainWindow.xaml的TabControl下 每个视图都有一个ViewModel MainWindow.xaml:MainViewModel SubScreen.xaml:子视图模型 以下是测试代码: [TestMethod] public void MyTest2() { // Arrange // Initilize
- MainWindow.xaml:MainViewModel
- SubScreen.xaml:子视图模型
[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);
}
“mainTabControl”是在MainWindow.xaml->中定义的,我可以得到这个“mainTabControl”选项卡控件
“EditTabControl”是在Subscreen.xaml->我无法获取此“EditTabControl”选项卡控件->customTabControlEditor为空中定义的
动态加载的代码中是否有错误?
提前谢谢。有错误吗?如果您设置了tabcontrol ItemsSource属性怎么办?@Babbillumpa,谢谢您的快速回复。上述动态加载设计已在实际应用中运行。但是当我使用这种动态加载设计编写测试代码时。不管用,不客气,什么不管用?您是否有任何错误或只是没有显示任何内容?没有任何错误。我只能从Subscreen.xaml文件中获取“EditTabControl”控件。