Window DataContextとは異なり、インスタンスItemsSource
から作成されたツリービューがあります。SecondViewModel
TreeViewItemに属するViewModelを`CommandParameter経由で送信したい。
ウィンドウデータコンテキストは次のとおり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>
前に述べたように、コマンドが呼び出されることはありません。私のコードの問題は何ですか?