2017-05-29 27 views
0

一旦我運行該程序,它會在我的MainWindow中打開一個UserControl。 UserControl是一個由3個按鈕組成的菜單。 該用戶控件的圖像: Menu在MainWindow中打開新的UserControl將刪除所有空行

背後主窗口中的代碼:

<UserControl 
     ... 
     d:DesignHeight="90" d:DesignWidth="525" > 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="100*"/> //Problem 
     <RowDefinition Height="100*"/> 
     <RowDefinition Height="100*"/> //Problem 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <Button Grid.Row="1" Margin="30,0" Content="First" Command="{Binding DataContext.SwitchToNextUserControl, 
     RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}, Mode=OneWay}" /> 

    <Button Grid.Row="1" Grid.Column="1" Margin="30,0" Content="Second"/> 
    <Button Grid.Row="1" Grid.Column="2" Margin="30,0" Content="Third"/> 

</Grid> 

該問題::

<Window 
    ... 
    Title="MainWindow" Height="350" Width="525" SizeToContent="WidthAndHeight" > 
<Window.DataContext> 
    <ViewModels:MainWindowViewModel /> 
</Window.DataContext> 

<ContentControl Content="{Binding CurrentViewModel}"/> //Inserts a UserControl 

背後菜單用戶控件的代碼 打開菜單後,空行(沒有按鈕,第一個和第三個)會摺疊(或者只是高度爲0?),如下所示:Running program 我可以通過爲每一行設置MinHeight來克服它,但它起作用只在像素上。我希望他們以星星的方式工作(「*」)。我想我可以從代碼背後設置自己的身高(使用星星),但只是想到它,讓我覺得我用左手摩擦了我的右耳。另外,一旦我點擊「第一個」按鈕,其他一些用戶控件將在窗口中打開,而不是「菜單」一個,其行也會摺疊。只是提及它。

所以問題是,我應該怎麼做才能讓我的UserControl出現,就像他們在設計器中看起來一樣?

+0

窗戶的高度是多少?如果增加窗戶會發生什麼? – mm8

+0

可以在我發佈的代碼上看到高度,它在MainWindow上爲350,在程序啓動時由UserControl 90代替。如果我在代碼中調整它們,沒有什麼變化。它總是需要按鈕的高度(根據我猜它們的FontSize) – MaxB

+0

如果調整窗口的大小,會發生什麼? – mm8

回答

0

您應該從您的窗口XAML移除到SizeToContent="WidthAndHeight"

這會導致窗口的高度縮小以適合UserControl的尺寸(並且實際上是中間高度Button)。

+0

如果我刪除了SizeToContent部分,MainWindow將始終保持其大小(高度爲350)。我希望它根據當前正在使用的UserControl調整大小 – MaxB

+0

然後,您應該在UserControl中爲網格指定MinHeight。您不能同時將窗口調整爲其內容,並且同樣要將內容調整爲適合窗口。這確實不可能。 – mm8

+0

我不希望內容調整到適合窗口大小,我只是希望它具有一定的大小。如果我以像素爲單位指定行的高度,而不是以星號指定高度,則此功能可行 – MaxB