我目前正在使用MVVM /命令和控件模板。 我想要做的事很簡單。我想要列出一個例如人員,用戶可以觸發他們每個人的行動。 但是事件/命令處理程序需要在人員對象上執行,例如因爲我想用按鈕從列表中刪除它。MVVM /命令和控件模板
所以我到目前爲止所做的是創建一個虛擬機,公開一個PersonVM列表以及每個持有我的人員對象的虛擬機。然後我用一個包含一個ItemsControl的控件模板創建一個CustomControl來顯示我的人物。
所有的數據都很好地顯示,沒有問題。
然後我嘗試添加允許用戶從列表中刪除某個人的部分。 所以我在數據模板上添加了一個按鈕。仍然沒有問題。
下一步是暴露由按鈕觸發的命令。
第一種方法是使用Josh Smiths RelayCommand。所以我將其中的一個添加到PersonViewModel並將其綁定到按鈕。 它的工作原理,但問題是我需要引發父虛擬機必須處理的事件(在命令執行後)。 Imho不好,就像越來越多的命令一樣,代碼對我來說似乎很混亂。
因此,我重寫了所有使用RoutedCommand,並試圖在控制層次結構中的更高級別添加CommandBinding。但這是不可能的,因爲ControlTemplate不允許我在視圖模型上調用方法。
所以我想知道這個問題的正確方法是什麼?不知何故,我相信我走錯了路,但我不知道在哪裏。
TIA 馬丁
我的主要模型是不公開命令,我的孩子虛擬現實是暴露它,因此這不適用於我的情況。 – 2010-01-05 07:47:23