我有一个从实例创建的树视图ItemsSource
,SecondViewModel
与我的 Window DataContext 不同。
我想通过`CommandParameter 发送属于 TreeViewItem 的 ViewModel。
窗口数据上下文是:MyViewModel
。treeviewitems 数据上下文是:SecondViewModel
我想通过SecondViewModel
而不是MyViewModel
。
所以,
CommandParameter ="{Binding}"
不起作用(因为它会发送MyViewModel
)
编辑:一些代码:
<TreeView Name="treeView" ItemContainerStyle="{StaticResource TreeViewItemStyle}" Grid.Row="1" Grid.Column="1">
<TreeViewItem Header="{Binding ProjectName}">
<TreeViewItem commandBehaviors:MouseDoubleClick.Command="{Binding SelectOtherTab}"
commandBehaviors:MouseDoubleClick.CommandParameter="{Binding}" //this returns the data context of the window, I want to return the Item Source
ContextMenu="{StaticResource AddClassMenu}" ItemTemplate="{DynamicResource ClassDataTemplate}" ItemsSource="{Binding ClassCollection}">
我怎样才能发送SecondViewModel
?
编辑:
我想启用删除当前项目,但由于某种原因该命令永远不会被调用。
这是代码:
<TreeViewItem x:Name="treeViewItem"
ContextMenu="{StaticResource AddClassMenu}" ItemTemplate="{DynamicResource ClassDataTemplate}" ItemsSource="{Binding ClassCollection}">
<TreeViewItem.ItemContainerStyle>
<Style TargetType="TreeViewItem">
HERE->> <Setter Property="ContextMenu" Value="{StaticResource RemoveClassMenu}"/>
<Setter Property="commandBehaviors:MouseDoubleClick.Command"
Value="{Binding ElementName=treeViewItem, Path=DataContext.SelectOtherTab}" />
<Setter Property="commandBehaviors:MouseDoubleClick.CommandParameter"
Value="{Binding }" />
</Style>
</TreeViewItem>
我的上下文菜单:
<ContextMenu x:Key="RemoveClassMenu">
<MenuItem Header="Delete" Command="{Binding ElementName=treeViewItem, Path=DataContext.RemoveClass}" CommandParameter="{Binding}"/>
</ContextMenu>
如前所述,该命令永远不会被调用。我的代码有什么问题?