首页 > 其他分享 >WPF MVVM模式ListBox下ContextMenu绑定Command的方法以及将所选的Item的数据传回去

WPF MVVM模式ListBox下ContextMenu绑定Command的方法以及将所选的Item的数据传回去

时间:2024-03-20 17:56:11浏览次数:19  
标签:MVVM Item 绑定 RelativeSource ContextMenu WPF ListBox

需求:ListBoxItem上右键,将数据传参。

疑问:ContextMenu不继承DataContext,导致直接用RelativeSource找根的方式也绑定不到。

解决方法:在ListBox.ContextMenu里写菜单,就可以直接绑定到ViewModel层的命令了,参数先用RelativeSource找到ContextMenu,再绑定PlacementTarget.SelectedItem。

<ListBox 
    x:Name="ResultBox" 
    Margin="0, 10, 0, 0" 
    Grid.Row="1"
    BorderThickness="0"
    ScrollViewer.VerticalScrollBarVisibility="Auto"
    PreviewMouseDoubleClick="ResultBox_PreviewMouseDoubleClick"
    ItemsSource="{Binding resultFiles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding FileName}" FontSize="18" FontWeight="Bold"/>
                <TextBlock Text="{Binding FilePath}" Foreground="Gray"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ContextMenu>
        <ContextMenu>
            <MenuItem x:Name="OpenFile" Header="打开文件"
                        Command="{Binding OpenFileCommand}"
                        CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"/>
            <MenuItem x:Name="OpenFolder" Header="打开文件所在文件夹" Click="OpenFolder_Click"/>
        </ContextMenu>
    </ListBox.ContextMenu>
</ListBox>

 

标签:MVVM,Item,绑定,RelativeSource,ContextMenu,WPF,ListBox
From: https://www.cnblogs.com/kgdy-wwy-mfkd/p/18085762

相关文章

  • Vue的MVVM模式与双向绑定原理
    v-model 是Vue.js框架中用于实现双向数据绑定的指令。它充分体现了MVVM(Model-View-ViewModel)模式中的双向数据绑定特性。下面我们将详细解释 v-model 如何体现MVVM和双向绑定:1.MVVM模式MVVM模式是一种软件架构设计模式,它将应用程序分为三个部分:Model(模型):代表应用程......
  • MvvmLight中,两个依赖属性的值发生变化时影响第三个控件属性的用法
    使用数据绑定配合IValueConverter(值转换器)创建一个自定义转换器,该转换器接收两个输入值,并根据他们是否相等返回相应的输出值。然后将这个转换器应用到第三个控件的属性上1publicclassEqualityToTextConverter:IValueConverter2{3publicobjectConvert(o......
  • Unity类银河恶魔城学习记录11-1 p103 Item源代码
     Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考此代码仅为较上一P有所改变的代码【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibiliItemData.csusingSystem.Collections;usingSystem.Collections.Generic;usingUn......
  • 随笔-Unity中的ScrollView如何跳转到指定的Item位置
         在我们平时开发滑动列表的UI时,虽然UGUI的ScrollView并不是很好用,但是有时一些非常简单的列表我们没有必要加入一些很复杂的列表插件,用简单的ScrollView就可以完成我们的需求。    我们可以通过计算列表中有多少个Item,再利用ScrollView中Content的长度来......
  • 【WPF】MVVM极其简单的例子
    目的:通过例子了解、理解MVVM的基本结构。ModelnamespaceWpfStudy.Model{publicclassUserModel{publicstringName{get;set;}}}ViewModelnamespaceWpfStudy.ViewModel{publicclassMainVM:NotifyPropBase{publicM......
  • QT 自定义QGraphicsItem 缩放后旋转 图形出现漂移问题
    实现自定义QGraphicsItem缩放和旋转时,遇到了这样一个问题:将item旋转一个角度,然后拖拽放大,再次进行旋转时图像会发生漂移。原本以为是放大后中心点位置没有改变,导致旋转时以原中心的旋转出现了偏移,但是重新设置旋转中心setTransformOriginPoint(rect.center());并没有起作用,图像......
  • 解决表格文件上传无法删除临时文件的问题Failed to perform cleanup of multipart ite
    java.io.UncheckedIOException:CannotdeleteC:\Users\hasee\AppData\Local\Temp\tomcat如图所示,刚开始以为是apifox没删除的问题,换了之后依旧这样 尝试方案1-失败 方法二-失败 方法三-成功 原文链接报错:StandardServletMultipartResolver:Failedtoperform......
  • C# ContextMenuStrip创建主菜单与子菜单
    ContextMenuStrip创建主菜单与子菜单usingSystem;usingSystem.Windows.Forms;usingSystem.ComponentModel;usingSystem.Data;namespaceMenuStripExample{publicpartialclassForm1:Form{publicForm1(){InitializeCompo......
  • Windows右键菜单管理程序:ContextMenuManager
    前言ContextMenuManager是一款由中国人开发免安装的纯粹的Windows右键菜单管理开源程序,可以非常方便的管理Windows电脑的右键菜单,轻松去除不必要的或者是流氓的菜单选项,使你的电脑更加的干净、清爽。程序使用非常简单,没有任何门槛,我感觉非常棒,极力推荐道友们下载使用。Github......
  • ItemsControl 控件
    一、ItemsControl简介   ItemsControl是用来表示一些条目集合的控件,它的成员是一些其它控件的集合。   其继承关系如下:   在这里插入图片描述   其常用的派生控件为:ListBox、ListView、ComboBox,为ItemsControl的具体实现。   ItemsControl的成员条目可以为......