2017-07-06 148 views
1

我正在嘗試創建一個主窗口,其中包含一個用於導航/按鈕的頁眉和一個用於顯示信息的頁腳。 (類似於頂部和底部欄上StackOverflow.com)WPF MainWindow顯示其他頁面

Example of how the header and footer stay in one place, while the middle section handles displaying the desired page

什麼是使主窗口的功能,可以在頁眉/頁腳之間顯示任何頁面的容器最好的方法是什麼?

+0

當我遇到這個問題時,我們對這種行爲使用了帶有隱藏標籤的大型TabControl。 – KamikyIT

回答

4

我想創建一個3排Grid,與中心項目是一個ContentControl。將它綁定到您的視圖模型上的CurrentPage屬性。

創建一個基類Page類,併爲您要顯示的每一頁數據創建子類。這個子類也是每個單獨頁面的視圖模型。

添加DataTemplatePage每個子類爲ContentControl使用,確保指定Type屬性(這是物理附加的頁面類型基礎上,CurrentPage屬性UI)。 DataTemplate的內容應該是UserControl,其中包含每種頁面類型的UI。

現在當你想改變頁面時,只需將CurrentPage設置爲你想要的頁面的一個實例,它就會自動改變。

此模式將保持每個頁面的UI與所有其他頁面分開,併爲它們提供強大的視圖模型(Page子類)。它允許超級簡單地更改頁面。並很好地遵循MVVM模式。您甚至可以將所有頁面加載到您呈現給用戶的列表中。如果用戶選擇一個頁面,用戶可以通過更多的綁定來進行頁面更改,而只需很少的工作。

-2

創建一個3行的頁面。頂行的高度爲'auto',中間行的高度爲'*',底行的高度爲'auto'。頂部和底部的行將佔用盡可能多的房間所需的頁眉和頁腳,中間的行將佔據房間的其餘部分。

-2

您可以使用網格

<Grid > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
<local:TopPage Grid.Column="0" Grid.Row="0" /> 
<local:MidPage Grid.Column="0" Grid.Row="1" /> 
<local:BottomPage Grid.Column="0" Grid.Row="2" /> 
</Grid> 
相關問題