ReactiveUI - 视图未正确呈现(或完整呈现)
ReactiveUI - Views not rendering properly (or in full)
我正在开始一个新项目,使用 ReactiveUI
和 MahApps.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
设置了 DesignHeight
和 DesignWidth
,但当它在运行时呈现时,它会自动调整自身大小以适应其内容的高度和宽度 - Button
.
将 VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"
添加到您的 ViewModelViewHost
声明并删除其他两个 Alignment
属性(它们默认为 Stretch),它应该将其内容拉伸到 [=18] 的大小=] 同时将任何具有固定大小的项目居中。
我正在开始一个新项目,使用 ReactiveUI
和 MahApps.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
设置了 DesignHeight
和 DesignWidth
,但当它在运行时呈现时,它会自动调整自身大小以适应其内容的高度和宽度 - Button
.
将 VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"
添加到您的 ViewModelViewHost
声明并删除其他两个 Alignment
属性(它们默认为 Stretch),它应该将其内容拉伸到 [=18] 的大小=] 同时将任何具有固定大小的项目居中。