作成しているTreeViewがあり、各アイテムにContextMenuを追加しています。問題は、私のViewModelで、TreeViewItemSourceがViewModel自体のプロパティにバインドされていることです。ViewModelの一部のプロパティを再度参照しようとすると、機能しないようです。
<TreeView Grid.ColumnSpan="1" Grid.Row="1" HorizontalAlignment="Stretch" ItemsSource="{Binding ModelItems}" SelectedTreeItem="{Binding SelectedItem, Mode=TwoWay}" VerticalAlignment="Stretch" Grid.RowSpan="3" Margin="5">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Models}">
<TextBlock Text="{Binding Header, Mode=TwoWay}" ToolTip="{Binding Tooltip, Mode=TwoWay}">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Server" Visibility="{Binding Path=IsServerVisible}">
<MenuItem Header="Add" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Windows:MainWindow}}, Path=ViewModel:ViewModel.AddServerCommand}"/>
<MenuItem Header="Edit" />
<MenuItem Header="Delete" />
</MenuItem>
<MenuItem Header="Config" Visibility="{Binding Path=IsConfigVisible}">
<MenuItem Header="Fetch" />
<MenuItem Header="Edit" />
<MenuItem Header="Save" />
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
StackOverflowに関する以前の投稿では、RelativeSourceを使用してメインウィンドウのViewModelに正しくバインドする方向を示しました。ただし、アプリケーションを実行すると、コマンドが機能せず、出力ウィンドウでバインディングエラーやxamlエラーが生成されません。
基本的に、Visibilityバインディングは、これらのプロパティが「モデル」アイテムに存在するために機能します。ただし、すべてをViewModel、特にコマンドに移動する必要があります。
誰かが私が間違って行ったことをここで見つけることができますか?