我有一个包含多个用户控件的类库。该库使用caliburn micro在同一类库中使用UserControl
方法将ViewModels
s绑定到相应的x:Name
。
现在我有一个托管应用程序,它在一个Window中托管这些UserControl。但是这个主机应用程序根本不使用Caliburn Micro。那我怎样才能在库本身中初始化caliburn bootstrapper。
HostApplication:
<Window>
<ContentControl>
<library:MainUserControl DataContext="{Binding MainUserControlViewModel}"/>
</ContentControl>
</Window>
班级图书馆
<UserControl x:Class="MainUserControl">
<ContentControl x:Name="OtherUserControlInSameLibrary"/>
</UserControl>
我尝试继承像AppBootstrapper: Bootstrapperbase
这样的Bootstrapper基类,并将false
传递给构造函数参数useApplication
。然后我调用了Initialize()
方法。但仍然没有适用约定。
MainUserControlViewModel构造函数
public MainUserControlViewModel()
{
AppBootstrapper appBootstrapper = new AppBootstrapper();
appBootstrapper.Initialize();
if (Debugger.IsAttached)
LogManager.GetLog = type => new DebugLog(type);
}
BootstrapperBase覆盖
public class AppBootstrapper : BootstrapperBase
{
public AppBootstrapper():base(false)
{
}
}
我还尝试运行caliburn调试器,但输出窗口中没有显示任何内容。
答案 0 :(得分:0)
将Caliburn.Micro mantainers提到的feedback和Andy Race的this blog post放在一起,似乎有点可行,但客户端应用程序代码仍然可以引用CM。
除了其他所需的设置(参见参考资料)之外,约束是由于自定义控件视图模型如何绑定到XAML中声明的视图:唯一的方法是通过{{显式设置视图模型1}}。
cal:Bind.Model
对于其他人,客户端应用程序可以完全忽略Caliburn.Micro。