Dragablz的MVVM绑定初探
Dragablz(https://github.com/ButchersBoy/Dragablz)是一套使用了Google Modern Design的多窗口选项卡管理框架,可以用在WPF和UWP应用上。
此前,我一般使用AvalonDock做为多文档式应用(MDI)的替代品。Avalondock 功能强大,但是其界面比较传统,与现代设计风格有较大差异。前几天开始使用Dragablz时,发现其应用简单,使用方便,在窗口管理不需要特别复杂的情况下使用Dragablz更加美观。
Dragablz支持内嵌“窗口”,或者称为标签页,和浮动“窗口”,称为工具窗口。下文中只涉及到标签页。
首先看一下主窗口的视图模型(MainWindowViewModel.cs)
|
|
MainWindow的绑定代码如下(MainWindow.xaml)
|
|
在Window.Resources中加入对应的样式TabablzControlStyle,注意,这在里指定的视图的数据源ItemSource,和关闭窗口回调。最后指定的窗口控制器是不需要改写的,使用库中的类即可。
|
|
同样在Window.Resources中加入VM中Document的数据模板,这样在向VM.Documents中增加页面视图模型时,就使用匹配的数据模块显示指定的视图。
|
|
最后需要实现的是窗口管理器类,这个管理器类用于将一个页面拖动离开当前主窗口,要产生一个新的主窗口,这个类用来管理产生新的主窗口的逻辑。
|
|
这个框架非常好用,和MVVM模型的集成也非常好。感兴趣的可以自己去试用一下。