我使用MVVM將視圖綁定到樹中的對象。我有一個實現在我的樹中的項目一個基類和基類有一個ContextMenu屬性:使用MVVM,ContextMenu ViewModel如何找到打開ContextMenu的ViewModel?
public IEnumerable<IMenuItem> ContextMenu
{
get
{
return m_ContextMenu;
}
protected set
{
if (m_ContextMenu != value)
{
m_ContextMenu = value;
NotifyPropertyChanged(m_ContextMenuArgs);
}
}
}
private IEnumerable<IMenuItem> m_ContextMenu = null;
static readonly PropertyChangedEventArgs m_ContextMenuArgs =
NotifyPropertyChangedHelper.CreateArgs<AbstractSolutionItem>(o => o.ContextMenu);
結合基類(和所有派生類)實現了結合到一個文本菜單的查看屬性:
<ContextMenu x:Name="contextMenu" ItemsSource="{Binding Path=(local:AbstractSolutionItem.ContextMenu)}"
IsEnabled="{Binding Path=(local:AbstractSolutionItem.ContextMenuEnabled)}"
ItemContainerStyle="{StaticResource contextMenuStyle}"/>
在菜單中的每一項被綁定到一個IMenuItem對象(一個ViewModel所述菜單項)。當你點擊菜單項時,它使用命令在基礎對象上執行命令。這一切都很好。
但是,一旦命令在IMenuItem類上執行,它有時需要獲取用戶右鍵單擊的對象的引用,以調出上下文菜單(或至少該對象的ViewModel)。這是上下文菜單的整點。我應該如何將樹項目ViewModel的引用傳遞給MenuItem ViewModel?請注意,一些上下文菜單由樹中的許多對象共享。
-1來源不能如果指定使用RelativeSource。運行時異常。 – 2012-03-20 18:18:34
DataContext =「{Binding PlacementTarget.DataContext,RelativeSource = {RelativeSource Self}}」 – JoanComasFdz 2012-04-17 09:05:54