I am struggling with binding to parent DataContext from DataTemplate/ContextMenu control. I've already tried solutions mentioned here and here but with no luck. I'm not able to bind to neither to property or command - no exceptions are thrown, but commands are not invoked and properties are set to null.
Here's my code sample (simplified as its possible):
<Metro:MetroWindow ...>
<Window.DataContext>
<local:MyViewModel />
</Window.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<StackPanel ... />
<Grid Grid.Column="1">
<Border ... />
<ListBox x:Name="FileList" ItemsSource="{Binding AddedFiles}" Margin="5,5,5,5" SelectionMode="Multiple" SelectionChanged="ItemsSelectionChanged">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel MaxWidth="700" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:FileListItem}">
<Grid Margin="5" Width="110" ToolTip="{Binding Path=TooltipInfo}" MouseDown="FileItemClick" Tag="{Binding DataContext,RelativeSource={RelativeSource Mode=Self}}">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="{Binding PlacementTarget.Tag.test,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}" />
<MenuItem Header="Test command" Command="{Binding PlacementTarget.Tag.CloseCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
</ContextMenu>
</Grid.ContextMenu>
<Grid.RowDefinitions ... />
<StackPanel ...(Databinding works here!) />
<TextBlock ... (Databinding works here!) />
<Rectangle ... (Databinding works here!) />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
</Grid>
</Grid>
I've tried to bind Tag property with Window's DataContext via RelativeSource too (and other possible solutions found across other topics), but nothing happens. Something must be clearly wrong in my approach.