2013-07-12 78 views
0

我正在實現一個資源管理器類型的視圖:左側是一個TreeView,右側是左側選定項目的詳細視圖/編輯器視圖。如何在TreeView中的項目上處理上下文菜單命令

TreeView包含不同類型的'葉'對象。我已經定義了HierarchialDataTemplates來定義對象如何呈現以及應該呈現哪個上下文菜單。 MenuItems具有綁定到視圖模型的命令。

我在努力的是在哪裏實現命令處理程序。直線前進的地方應該放在'葉'視圖模型中,但他們對「探索者」視圖模型以及如何打開細節/編輯器視圖並不知情。

最簡單的解決方案是將葉子上下文菜單綁定到資源管理器視圖模型,因爲這是最佳執行操作的地方。

這通常如何處理?有沒有「知名」的模式?

+1

Imho,你應該綁定到資源管理器視圖模型 - 在你的情況下,它是'葉'視圖模型的某種類型的管理器。在我看來,這個解決方案沒有任何問題。 –

回答

1

剛剛找到了這個問題的答案 - Bind to parent DataContext within DataTemplate - 這讓我走上了正軌。

UserControl得到一個名字,命令綁定引用了這個 - Source={x:Reference uc}}

<UserControl x:Class="View.AdminWorkstationView" Name="uc"> 

<UserControl.Resources> 
    <DataTemplate DataType="{x:Type vm:RequiredDeviceViewModel}"> 
     <DockPanel> 
      <DockPanel.ContextMenu> 
       <ContextMenu> 
        <MenuItem Command="{Binding DataContext.EditDeviceCommand, Source={x:Reference uc}}" 
           CommandParameter="{Binding}" 
           Header="Edit device" /> 
       </ContextMenu> 
      </DockPanel.ContextMenu> 
     </DockPanel> 
    </DataTemplate> 

</UserControl.Resources> 
相關問題