我正在嘗試創建一個主窗口,其中包含一個用於導航/按鈕的頁眉和一個用於顯示信息的頁腳。 (類似於頂部和底部欄上StackOverflow.com)WPF MainWindow顯示其他頁面
什麼是使主窗口的功能,可以在頁眉/頁腳之間顯示任何頁面的容器最好的方法是什麼?
我正在嘗試創建一個主窗口,其中包含一個用於導航/按鈕的頁眉和一個用於顯示信息的頁腳。 (類似於頂部和底部欄上StackOverflow.com)WPF MainWindow顯示其他頁面
什麼是使主窗口的功能,可以在頁眉/頁腳之間顯示任何頁面的容器最好的方法是什麼?
我想創建一個3排Grid
,與中心項目是一個ContentControl
。將它綁定到您的視圖模型上的CurrentPage
屬性。
創建一個基類Page
類,併爲您要顯示的每一頁數據創建子類。這個子類也是每個單獨頁面的視圖模型。
添加DataTemplate
爲Page
每個子類爲ContentControl
使用,確保指定Type
屬性(這是物理附加的頁面類型基礎上,CurrentPage
屬性UI)。 DataTemplate
的內容應該是UserControl
,其中包含每種頁面類型的UI。
現在當你想改變頁面時,只需將CurrentPage設置爲你想要的頁面的一個實例,它就會自動改變。
此模式將保持每個頁面的UI與所有其他頁面分開,併爲它們提供強大的視圖模型(Page
子類)。它允許超級簡單地更改頁面。並很好地遵循MVVM模式。您甚至可以將所有頁面加載到您呈現給用戶的列表中。如果用戶選擇一個頁面,用戶可以通過更多的綁定來進行頁面更改,而只需很少的工作。
創建一個3行的頁面。頂行的高度爲'auto',中間行的高度爲'*',底行的高度爲'auto'。頂部和底部的行將佔用盡可能多的房間所需的頁眉和頁腳,中間的行將佔據房間的其餘部分。
您可以使用網格
<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>
當我遇到這個問題時,我們對這種行爲使用了帶有隱藏標籤的大型TabControl。 – KamikyIT