根据这个问题,使用ReactiveUI和CM应该是在公园散步:ReactiveUI and Caliburn Micro together? 但是我已经在婴儿步骤上遇到了困难。
我按照惯例设置:
ShellViewModel + ShellView
以及不同形式的
ContentViewModel + ContentView
和一个简单的MEF
Bootstrapper。
我也在使用Fody为ReactiveUI编织PropertyChanged和PropertyChanging,但是我也没有Fody就得到了错误。
[Export]
public class ShellViewModel : ReactiveObject
{
public ShellViewModel()
{
ActiveItem = new ContentViewModel();
}
public ContentViewModel ActiveItem { get; set; }
}
及其XAML:
<Window x:Class="UiTest.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ShellView" Height="300" Width="300">
<ContentControl x:Name="ActiveItem"></ContentPresenter>
</Window>
其他两个文件是空类和用户控件。
在应用程序启动时,我在ReactiveUI.Core中遇到StackOverflowException,这意味着我必须做一些根本错误的事情。如果有人有一些,我会喜欢某种最新的文档。
更新
我在使用RxUI 5.x时只会出现错误,而不是在使用RxUI 4.x时。我已经排除了MEF令人讨厌的问题:如果我将ContentViewModel作为ReactiveObject而不是ShellViewModel,它仍然会给我们一个很好的堆栈溢出。顺便说一句,这发生在ctor上。 Caliburn还没有触及任何东西,所以我想我应该改变主题标题。
堆栈追踪:
System.Reactive.Core.dll!System.Reactive.ObserverBase<System.Exception>.ObserverBase() + 0x23 bytes
System.Reactive.Core.dll!System.Reactive.AnonymousObserver<System.Exception>.AnonymousObserver(System.Action<System.Exception> onNext, System.Action<System.Exception> onError, System.Action onCompleted) + 0x38 bytes
System.Reactive.Core.dll!System.Reactive.AnonymousObserver<System.Exception>.AnonymousObserver(System.Action<System.Exception> onNext) + 0x4c bytes
System.Reactive.Core.dll!System.Reactive.Observer.Create<System.Exception>(System.Action<System.Exception> onNext) + 0xd4 bytes
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xb9 bytes
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes
...大约100.000行后:
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes
The maximum number of stack frames supported by Visual Studio has been exceeded.
答案 0 :(得分:0)
这是当前版本的ReactiveUI中的一个错误,我将立即修复。谢谢你的报告。
更新:已修复此问题,请从图库中抓取5.1.2
。