2012-04-27 90 views
4

我嘗試更新曲面元素的組件時遇到一些問題。我不知道我對這個問題的解決方法是否是錯誤的,因爲我是這個主題的新手。從另一個控制孩子更新控件

我點由下圖

enter image description here

根據該在菜單中選擇的選項代表,加載不同的用戶控件只StackPanel中的孩子但我habing用於更新的問題從加載的用戶控件,例如列表視圖:當我保存一個新的項目,我需要在ListView充電的項目列表

回答

1

MVVM將是一個很好的模式。如果您在控件之間傳遞數據時遇到問題 - 爲何不在統一數據層之上引入它們?考慮這個:

你的菜單中的三個單選按鈕,每個的IsChecked屬性都綁定到Visibility屬性UserControl

StackPanel持有所有三個UserControls

ListView勢必視圖模型的List<Item>

勢必ListView.SelectedItemUserControls的每個:使用TextBox編輯使用TextBlock爲只讀,一個他們中的一個。第三個將在您的List<Item>中創建新項目。您必須爲每個創建ItemTemplate或創建一個UserControl(因爲它們看起來非常相似)並使用DataTemplateSelector

如果你不熟悉MVVM here是一個好的開始。你也可以使用現有的框架之一MVVM Light

+0

對於一個簡單的項目,最好是直接使用模式還是使用框架?我不想安裝不必要的東西並且使我的項目變得複雜 – rkmax 2012-04-27 15:24:35

+0

我會說你自己開始,瞭解關鍵的東西(DataContext,綁定,命令等),但是在某個階段你會發現預先製作的框架將會爲您節省大量時間。 – StaWho 2012-04-27 16:17:42

+0

你是對的。我已經安裝了MVVM Light,但肯定文檔不好;像http://www.galasoft.ch/mvvm/creating/這樣的教程有很多不足之處 – rkmax 2012-04-27 16:33:49

0

您可以在您的孩子創建一個事件

public delegate void HandleNAMEOFYOURHANDLEEVENT(); 

你的子類

public event HandleNAMEOFYOURHANDLEEVENT yourInstance; 

把它用在你的子類

if (!ReferenceEquals(yourInstance, null)) 
         { 
          yourInstance(); 
         } 

並且聲明它在你的父母像其他事件。