2015-06-22 82 views
0

所以我正在做我的第一個WPF MVVM應用程序。剛剛學習MVVM的正確原則,但有一些東西,我不明白...WPF和MVVM,正確的方法

我已經有幾個用戶控件定義。 第一個問題是使用UserControl或DataTemplates更改MainWindow的內容會更好嗎?

如何使「MainWindow.xaml」中的「Binding」在按下按鈕時更改UserControl/DataTemplates? 例如,按下「下一步」按鈕後,主窗口的內容消失,用戶控制的內容出現在「MainWindow.xaml」的畫面上。 也許用「」綁定,禁用它並啓用它?

我在DataTemplate A Simple MVVM Example上找到了一些函數的例子。它幫助我實現了一些東西,但是我看到關於「UserControl」和「DataTemplate」的一些討論以及如何去做?所以現在我很困惑:)

+0

你想創建什麼樣的UI?有沒有類似用戶界面的應用程序? – Liero

+0

看到這個鏈接的應用程序:https://www.youtube.com/watch?v = Bk7mlEQI2rk 我不需要這麼花哨的應用程序,但princip是非常好的 - 頂部是「dockbar」,引導用戶超過應用程序。這不是很好的例子,但我沒有任何其他的想法,因爲我是新的。而這個例子可能有一些擴展名:) – Pukaai

+1

谷歌給我http://stackoverflow.com/questions/1405739/mvvm-tutorial-from-start-to-finish –

回答

1

我最近與MVVM模式的WPF應用程序,我做了以下內容:

  • 我有一個「窗口」,在主窗口,在此窗口中的所有UserControls被加載。

  • 每個UserControl都有一個不同的Viewmodel,例如「GeneralSettingsUserControl」具有用於驗證和數據綁定的GeneralSettingsViewModel。

  • 每個用戶控件有它自己的代碼隱藏在數據綁定到其視圖模型

  • 下面的代碼我發現在互聯網上(我不知道了網址),但對我來說,做的伎倆改變在主窗口中輸入ContentControl。

Switcher.cs:

public static mainWindow mainWindow; 
public static void switchPage(UserControl p_objNewPage) 
{ 
    mainWindow.navigate(p_objNewPage); 
} 

mainWindow.xaml.cs

public void navigate(UserControl nextPage) 
{ 
    PageContent.Children.Clear(); 
    PageContent.Children.Add(nextPage); 
    PageContent.LastChildFill = true; 
} 

PageContent是其中的主要內容所在網格的名稱。在每個UserControl中,您可以調用Switcher.switchPage(新的UserControl)來更改窗口的內容。所以當你點擊一個按鈕時,你可以調用這個方法。

希望它有幫助,祝你好運。

+0

謝謝!我喜歡用我的應用程序製作相同的技巧(「...但對我來說,它改變了在mainwindow中更改de ContentControl的技巧。」)。你的「ContentControl」是datatemplates或usercontrols窗口? – Pukaai

+0

我找到了我找到這段代碼的網址:[link](https://azerdark.wordpress.com/2010/04/23/multi-page-application-in-wpf/) –

+0

Usercontrols。數據模板用於創建單個頁面的佈局,但我不確定是否有添加代碼隱藏的可能性 –