Caliburn Micro和ModernUI示例/教程
有没有人有关于如何将Caliburn Micro与ModernUi( https://mui.codeplex.com )一起使用的示例或教程?
好的,所以我快速搞砸了它,看看Mui论坛,这似乎是最好的方法:
由于窗口从URL加载内容,您需要采用视图优先方法,然后找到适当的VM并绑定两者。
执行此操作的最佳方法似乎是通过ContentLoader
类,该类用于在ModernWindow
时将内容加载到ModernWindow
。 您可以将DefaultContentLoader
子类化,并提供必要的CM魔法来绑定加载的项目:
public class ModernContentLoader : DefaultContentLoader { protected override object LoadContent(Uri uri) { var content = base.LoadContent(uri); if (content == null) return null; // Locate the right viewmodel for this view var vm = Caliburn.Micro.ViewModelLocator.LocateForView(content); if (vm == null) return content; // Bind it up with CM magic if (content is DependencyObject) { Caliburn.Micro.ViewModelBinder.Bind(vm, content as DependencyObject, null); } return content; } }
你的CM引导程序应该只引导一个由基于ModernWindow
的视图支持的ModernWindow
视图模型(CM尝试使用EnsureWindow
创建一个新的基本WPF Window类,除非你的控件已经从ModernWindow
所做的Window
inheritance。如果你需要所有的对话框和弹出窗口是MUI你可能需要重新实现WindowManager
):
public class Bootstrapper : Bootstrapper { }
哪个可以是指挥(OneActive),看起来像这样:
public class ModernWindowViewModel : Conductor.Collection.OneActive { }
而XAML的观点是
ModernWindowView.xaml
显然,您还需要将加载器作为资源:
这是我用作测试的ChildViewModel
:
public class ChildViewModel : Conductor { public void ClickMe() { MessageBox.Show("Hello"); } }
和XAML(只需一个按钮)
Hello World
并且概念certificate:
我使用适用于WPF,Caliburn Micro和MEF的Modern UI创建了一个非常非常简单的聊天应用程序示例。
https://github.com/gblmarquez/mui-sample-chat
我希望它有所帮助