ReactiveUI - 视图未正确呈现(或完整呈现)

ReactiveUI - Views not rendering properly (or in full)

我正在开始一个新项目,使用 ReactiveUIMahApps.Metro。我遇到的第一个障碍是视图没有完整显示的问题。我有一个 Window,其中 Window 我有一个来自 RxUI 库的 ViewModelViewHost。它是嵌套视图模型的简单容器。 ActiveItem 绑定已正确绑定到用户控件的视图模型,并且用户控件的 Button 在屏幕上可见。

我希望看到的是 Window,背景为深灰色,中间有一个按钮。我看到的是带有默认背景的 Window 和中间的 Button。这是不对的。如果我删除按钮,我在 Window 上什么也看不到,只有默认背景。

似乎 ViewModelViewHost 只显示了 UserControl 的实际内容,忽略了不被视为真正控件的内容,例如网格等

有没有人遇到过这种行为?

<mah:MetroWindow x:Class="...MainWindow"
                 xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:rx="clr-namespace:ReactiveUI;assembly=ReactiveUI"
                 WindowStartupLocation="CenterScreen"
                 ShowTitleBar="False"
                 ShowCloseButton="False"
                 ShowMaxRestoreButton="False"
                 ShowMinButton="False"
                 Height="768"
                 Width="1024">
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <rx:ViewModelViewHost ViewModel="{Binding ActiveItem}" />
    </Grid>
</mah:MetroWindow>


<UserControl x:Class="...NestedView"
             Name="TheUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             TextOptions.TextHintingMode="Auto"
             TextOptions.TextRenderingMode="Auto"
             d:DesignHeight="768" d:DesignWidth="1024">

    <Grid Background="DarkGray">
        <Button Width="200" Height="100" />
    </Grid>
</UserControl>

这不会是 ReactiveUI 问题,只是一个简单的 WPF 问题。

ViewModelViewHost 以您的 window 为中心。虽然您的 UserControl 设置了 DesignHeightDesignWidth,但当它在运行时呈现时,它会自动调整自身大小以适应其内容的高度和宽度 - Button.

VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" 添加到您的 ViewModelViewHost 声明并删除其他两个 Alignment 属性(它们默认为 Stretch),它应该将其内容拉伸到 [=18] 的大小=] 同时将任何具有固定大小的项目居中。