我使用完美的库AvalonDock,我注意到在运行程序中单击“文件 - >新建”时创建了文本文档。但是,我想创建不是Text Document,而是使用我的按钮及其viewmodel创建一些UserControl。
我找到了一个创建新文本文档的代码:
private void OnNew(object parameter)
{
_files.Add(new FileViewModel());
ActiveDocument = _files.Last();
}
这段代码创建TextDocument有可能吗?你有一些教程如何实现它?
我的问题是如何使用ViewModel创建用户控件而不是文本文档?
GEMINI就是一个很好的例子。
您可以使用StyleSelector和DataTemplateSelector来完成。
这很简单。如果我用被称为TextBox
的DataTemplate
替换UserControl
中的SomeUserControl
,它实际上被UserControl
取代,我可以插入任何控件:
<Window x:Class="AvalonDock.MVVMTestApp.NewWindow"
....
xmlns:local="clr-namespace:AvalonDock.MVVMTestApp">
<avalonDock:DockingManager.LayoutItemTemplateSelector>
<local:PanesTemplateSelector>
<local:PanesTemplateSelector.FileViewTemplate>
<DataTemplate>
<!--<TextBox Text="{Binding TextContent, UpdateSourceTrigger=PropertyChanged}"/>-->
<local:SomeUserControl/>
</DataTemplate>
</local:PanesTemplateSelector.FileViewTemplate>
.....
</avalonDock:DockingManager.LayoutItemTemplateSelector>
</Window>
AvalonDock是非常酷的对接窗口控制!