2015-11-11 72 views
0

有一些空閒時間,並想嘗試在WPF中製作遊戲。 我想知道,改變窗口視圖的最好方法是什麼? 我做了一個「主菜單」窗口,有三個按鈕。新遊戲,繼續遊戲和退出遊戲。 當按下新遊戲時,我想讓窗口轉到下一個「視圖狀態」來創建玩家等,不想要一個新的窗口彈出。什麼是實現這個最好的方式。如何更改WPF中的視圖?

+0

是MVVM應用程序還是代碼背後? – StepUp

+0

這是一個MVVM應用程序! – Micsto

+0

如果您爲每個視圖狀態創建一個類,那麼您可以將內容控件綁定到當前視圖狀態並使用數據模板來定義其顯示方式 – MikeT

回答

5

這是適當的,如果你想動態切換取決於視圖模型視圖使用的DataTemplates:

<Window> 
    <Window.Resources> 
     <DataTemplate DataType="{x:Type ViewModelA}"> 
     <localControls:ViewAUserControl/> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type ViewModelB}"> 
     <localControls:ViewBUserControl/> 
     </DataTemplate> 
    <Window.Resources> 
    <ContentPresenter Content="{Binding CurrentView}"/> 
</Window> 

如果Window.DataContextViewModelA一個實例,然後ViewA將會顯示出來,

Window.DataContext是ViewModelB的實例,然後顯示ViewB。

我見過的最好的例子是Rachel LimSee the example

+0

謝謝你,現在就試試吧! – Micsto

+0

@Micsto看到我更新的答案(在底部)。你可以看到我見過的最好的例子。我希望這對你有幫助。 – StepUp

+0

這是他們要走的路,謝謝! – Micsto

0

您可以實現您需要的每個GUI作爲UserControl並根據當前步驟加載所需的UserControl。

+0

輕微變化但我會建議使用數據模板和內容控件而不是用戶控件 – MikeT

+0

@MikeT好吧,我從來沒有使用過DataTemplates。如何擺脫單獨的窗戶,這只是一個快速的想法。 – Dom84

+0

如果你使用WPF我會建議看看他們這是基礎知識http://www.wpftutorial.net/datatemplates.html – MikeT