3

根据这个问题,使用 ReactiveUI 和 CM 应该是在公园里散步:ReactiveUI 和 Caliburn Micro 在一起? 但是我已经在婴儿阶段遇到了困难。

我将使用我通常的设置:

ShellViewModel + ShellView以及不同形式的 ContentViewModel + ContentView简单MEF引导程序。

我也在使用 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.    
4

1 回答 1

0

这是当前版本的 ReactiveUI 中的一个错误,我将立即修复。感谢您的报告。

更新:这是固定的,5.1.2从图库中获取。

于 2013-08-10T10:19:26.397 回答