我的应用程序由MainWindow
和ContentControl
组成,我根据所选菜单更改ViewModel。
我作为内容显示的一个UserControl包含以下WrapPanel
:
<UserControl ...>
<Grid>
<WrapPanel>
<ItemsControl ItemsSource="{Binding Connections}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.ConnectionSelectCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding}"
FocusManager.FocusedElement="{Binding ElementName=InstanceName}"
Style="{DynamicResource DashboardButton}">
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" Text="{Binding Name}" />
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete"
Command="{Binding ConnectionRemoveCommand}"
CommandParameter="{Binding}" />
</ContextMenu>
</Button.ContextMenu>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</WrapPanel>
</Grid>
</UserControl>
Command
上的ContextMenu
无法正常工作,因为它会尝试在ConnectionRemoveCommand
对象上调用Connection
而不是ConnectionViewModel
DataContext
的{{1}}。
如何将UserControl
绑定到Command
,ConnectionViewModel
是CommandParameter
对象?
答案 0 :(得分:1)
如果您将Tag
的{{1}}属性绑定到Button
的{{1}},则可以使用DataContext
绑定ItemsControl
PlacementTarget
:
ContextMenu