我有一个ItemsControl绑定到我的ViewModel上的一个集合。这个ItemsControl提供了几个“消息”。我需要一个ContextMenu,当单击它时,它提供了一个选项,用于将该特定消息复制到剪贴板。
Command应该在ViewModel上激活,我要传递的CommandParameter就是Message本身。
我遇到的问题是获取ContextMenu已被打开的实际消息。
我尝试过多种不同的方法,但我似乎无法找到一种方法将消息作为Command的参数传递。
我应该寻找一种不同的方法来实现这一目标吗?问题是使用带有ItemsPresenter的ItemsControl吗?
<ScrollViewer CanContentScroll="False"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
Grid.RowSpan="1">
<ItemsControl ItemsSource="{Binding MyActiveConversation.OrderedMessages, UpdateSourceTrigger=PropertyChanged}"
IsEnabled="{Binding MyActiveConversation.IsOptOut, Converter={StaticResource BoolToEnabledInverter}}"
ItemTemplateSelector="{StaticResource tSelector}"
VirtualizingPanel.IsVirtualizing="False"
SourceUpdated="SourceUpdatedHandler" MinWidth="450">
<ItemsControl.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Template="{DynamicResource MenuItemControlTemplate}"
CommandParameter="{Binding}" Command="{Binding Path=Data.CopyTextMessageCommand, Source={StaticResource ContextProxy}}">
</MenuItem>
</ContextMenu>
</ItemsControl.ContextMenu>
<ItemsControl.Template>
<ControlTemplate>
<Grid>
<ItemsPresenter VirtualizingPanel.IsVirtualizing="False"/>
</Grid>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
答案 0 :(得分:0)
CommandParameter="{Binding}"
对我有用,对CommandParameter="{Binding .}"