在类库

时间:2015-10-21 15:31:51

标签: c# wpf caliburn.micro

我有一个包含多个用户控件的类库。该库使用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调试器,但输出窗口中没有显示任何内容。

1 个答案:

答案 0 :(得分:0)

将Caliburn.Micro mantainers提到的feedback和Andy Race的this blog post放在一起,似乎有点可行,但客户端应用程序代码仍然可以引用CM。

除了其他所需的设置(参见参考资料)之外,约束是由于自定义控件视图模型如何绑定到XAML中声明的视图:唯一的方法是通过{{显式设置视图模型1}}。

cal:Bind.Model

对于其他人,客户端应用程序可以完全忽略Caliburn.Micro。