从 ItemsControl 中的 Item 获取上下文菜单目标

本文关键字:上下文 菜单 目标 获取 Item ItemsControl 中的 | 更新日期: 2023-09-27 18:34:56

我有一个绑定到ViewModel上的集合的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>

从 ItemsControl 中的 Item 获取上下文菜单目标

CommandParameter="{Binding}"

我有用,对CommandParameter="{Binding .}"也一样