我刚刚将ReactiveUI添加到现有代码库中。当然,对于第一次控制我尝试了,我遇到了障碍。我将它与嵌入在TabControl中的UserControl一起使用。代码看起来像这样:
public partial class TabPageControl : UserControl, IViewFor<TestViewModel>
{
public TabPageControl()
{
InitializeComponent();
ViewModel = new TestViewModel();
this.WhenActivated(dispose =>
{
dispose(this.Bind( ... ));
dispose(this.BindCommand( ... ));
});
}
}
当我运行应用程序时,收到以下错误消息:
不知道如何检测TabPageControl 激活/停用,您可能需要实施 IActivationForViewFetcher
那么,我该如何实现IActivationForViewFetcher?我不确定我应该对GetAffinityForView
做些什么。我在GetActivationForView
中假设我需要检查UserControl是否在TabControl中当前可见?
答案 0 :(得分:1)
虽然我想了解如何实现IActivationForViewFetcher
的方法(特别是我确定控件在VisualTree中的部分) - 我问题的真正原因是我的主程序集没有有适当的引用(控件在类程序集中)。
我假设(因为我已经浏览了ReactiveUI源)ReactiveUI.Winforms.Registrations
需要由主程序集实例化 - 包括注册ActivationForViewFetcher
。
顺便提一下,类库是用C#编写的,主程序集是VB.NET。所以我不确定这是否导致了这个问题。
至少它现在正在运作!
答案 1 :(得分:0)
因为该线程太旧了,所以我不能帮助任何人。
解决了我的问题的是,在应用程序上运行的所有项目/插件上都有ReactiveUI.WPF,ReactiveUI.WinForms
,CefSharp.WPF
和CefSharp.WinForms
NuGet
引用。
我的怀疑是,当初始化ReactiveUI/CefSharp
并且它不包含所需的全部info/files
时,以后将无法在运行时添加它们。但这只是根据我的经验进行的猜测。