2015-04-01 36 views
1

我正在使用ReactiveUIMahApps.Metro開始一個新項目。我遇到的第一個障礙是一個沒有完整顯示的觀點問題。我有一個Window,在那Window我有一個ViewModelViewHost從RxUI庫。它是一個嵌套視圖模型的簡單容器。 ActiveItem綁定正確綁定到用戶控件的視圖模型,並且用戶控件中的Button在屏幕上可見。ReactiveUI - 視圖不能正確呈現(或全部)

我期望看到的是一個Window,暗灰色背景和中間的一個按鈕。我看到的是Window的默認背景和中間的Button。這個不對。如果我刪除按鈕,我看不到Window,只有默認的背景。

看來ViewModelViewHost只顯示用戶控件的實際內容,並不顧什麼不被認爲是真正的控制,如電網等

有沒有人碰到這種行爲之前?

<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> 

回答

5

這不會是一個ReactiveUI問題,只是一個簡單的WPF問題。

ViewModelViewHost居中在您的窗口。雖然您的UserControl設置了DesignHeightDesignWidth,但在運行時它會自動將其自身的大小設置爲其內容的高度和寬度 - Button

添加VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"ViewModelViewHost聲明,並刪除其他兩個Alignment屬性(它們默認爲Stretch),並同時中心有一個固定大小的任何項目,應該延伸其內容的Window的大小。

+0

不幸的是沒有改變一件事。不管怎麼說,還是要謝謝你。 – BlackBox 2015-04-02 07:13:47

+1

@BlackBox如果唯一的孩子是ViewModelViewHost - 我剛剛注意到那裏還有一個網格,我寫的會適用。除非你在窗口中添加其他東西,否則我會刪除網格並按照上面的方法進行操作,否則我會在有機會測試時更新答案。 – 2015-04-02 07:18:02

+0

我剛剛從窗口中移除了網格,並按預期呈現了視圖。但是在用戶控件中,我應該想要一個帶有2列的網格,1帶有一個按鈕,另一個帶有'ViewModelViewHost',同樣的問題在第1列中重複出現。這怎麼能克服?在過去我曾經使用過Caliburn.Micro的內容控件,我從來沒有遇到過這樣的問題。 – BlackBox 2015-04-02 07:37:41