2011-08-26 37 views
0

我創建了一個像嚮導一樣的東西,並且我使用了多個用戶控件,但是我需要從該元素獲取父元素來替換下一個用戶控件。如何更改WPF中的用戶控件?

我該怎麼做?

+0

您可能想查看PRISM來管理您的意見。它允許你定義你的主窗口的區域,並且當你向其他視圖請求導航時,它將顯示並隱藏你的用戶控件視圖。它乍一看似乎令人望而生畏,但一旦掌握了它,就會讓您的導航邏輯更加輕鬆。 –

回答

0

讓我們認爲你有5個用戶控件。在創建嚮導時,您需要在網格內添加新的UserControl,並從相同的父網格中刪除以前的UserControl。

以下函數將自動刪除較舊的UserControl並添加新的UserControl。。但是對於第一個UserControl,您可以直接使用MyParentPanel.Children.Add(myFirstUserControl)將其添加到其父項中;

 private void AddNewUserControlAndAutoRemoveOldUserControl(UserControl control) 
     { 
      if (control != null) 
      { 
       Panel parent = control.Parent as Panel; 

       if (parent != null) 
       { 
        // Removing old UserControl if present 
        if(parent.Children.Count > 0) 
         parent.Children.RemoveAt(0); 

        parent.Children.Insert(0, control); 
       } 
      } 
     } 
} 

希望這可以幫助你!

0

那麼,有多種方法可以完成嚮導,但最簡單的方法就是從主窗體管理UserControls。只需向主窗體添加一個區域,該窗體將成爲每個用戶控件的父窗體,然後在需要時從容器中添加/刪除用戶控件。

0

最優雅的方式來做到這一點(我會說最好的)是使用選擇器或列表框。

您的嚮導將有多個頁面,每個頁面都暴露一個或多個信息,從而控制綁定到某些數據。換句話說,你應該考慮擁有一個包含數據的「模型」,頁面將綁定到這個數據。

現在,考慮爲每個頁面設置不同的模型,併爲這些模型提供列表框。這個ListBox應該已經定義了它的ItemTemplateSelector,它允許在項目數據(即模型)上選擇某個DataTemplate。

該技術最難的部分是爲ListBox創建/定義控件模板,該模板應該僅用於顯示所選項目(SelectedItem)。以這種方式,您只需更改當前選擇,嚮導頁面將自動顯示。

雖然這種技術看起來是一種矯枉過正,但對於「經典」方法來說,這是非常方便的。您的代碼更乾淨,更易於調試,可重複利用,並且在模塊之間提供高度分離。所有這些都會帶來更多的可靠性和快速發展。