如何创建新的自定义视图(UserControl)?阿瓦隆码头
How to create new custom View(UserControl)? AvalonDock
我使用完美的库 AvalonDock,我注意到在 运行 程序中单击 "File->New" 时创建了文本文档。但是,我想创建的不是文本文档,而是一些带有我的按钮及其视图模型的用户控件。
我找到了创建新文本文档的代码:
private void OnNew(object parameter)
{
_files.Add(new FileViewModel());
ActiveDocument = _files.Last();
}
现在:
想实施:
此代码创建 TextDocument
可能吗?你有一些如何实现它的教程吗?
我的问题是如何使用 ViewModel 创建 UserControl 而不是文本文档?
GEMINI 就是一个很好的例子。
您可以使用 StyleSelector 和 DataTemplateSelector 来完成。
真的很简单。如果我将 DataTemplate
中的 TextBox
替换为称为 SomeUserControl
的 UserControl
,它实际上被 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对接真是爽windows控!
我使用完美的库 AvalonDock,我注意到在 运行 程序中单击 "File->New" 时创建了文本文档。但是,我想创建的不是文本文档,而是一些带有我的按钮及其视图模型的用户控件。
我找到了创建新文本文档的代码:
private void OnNew(object parameter)
{
_files.Add(new FileViewModel());
ActiveDocument = _files.Last();
}
现在:
想实施:
此代码创建 TextDocument 可能吗?你有一些如何实现它的教程吗?
我的问题是如何使用 ViewModel 创建 UserControl 而不是文本文档?
GEMINI 就是一个很好的例子。
您可以使用 StyleSelector 和 DataTemplateSelector 来完成。
真的很简单。如果我将 DataTemplate
中的 TextBox
替换为称为 SomeUserControl
的 UserControl
,它实际上被 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对接真是爽windows控!