WPF MVVM基础教程(三)命令/事件的绑定

这篇具有很好参考价值的文章主要介绍了WPF MVVM基础教程(三)命令/事件的绑定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

命令/事件的绑定

除了数据绑定,mvvm中更重要的另一块就是命令和事件的绑定,wpf中关于按钮Button、菜单项MenuItem等关于点击交互的事件,可以通过命令Command在ViewModel 中实现。

基本的命令绑定

示例:在Button上绑定命令

在ViewModel中添加命令和具体执行的内容


public CommandBase UpdateCommand
 {
     get
     {
         return new CommandBase(obj =>
         {
             Name = NewName;
         });
     }
 }

在Button上进行绑定

<Button
            Command="{Binding UpdateCommand}"
            Content="更新" />

运行:
WPF MVVM基础教程(三)命令/事件的绑定
执行后:
WPF MVVM基础教程(三)命令/事件的绑定

命令绑定传入参数

Button上定义CommandParameter属性

 <Button
         
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Command="{Binding UpdateCommand}"
            CommandParameter="我是参数"
            Content="更新" />

在ViewModel的命令中,通过obj接收传入的参数

 public CommandBase UpdateCommand
        {
            get
            {
                return new CommandBase(obj =>
                {
                    Name = obj.ToString()+"---"+NewName;
                });
            }
        }

执行后的效果:
WPF MVVM基础教程(三)命令/事件的绑定

传入控件的属性参数

将控件属性或者控件本身(如果传入控件本身在Path后面填.Path=.)当做参数传入在CommandParameter中绑定ElementName对应控件的name,和属性名称

格式:

CommandParameter="{Binding ElementName=ControlName(控件name), Path=PorpertyName(控件属性名)}"

        <Button
            Width="62"
            Height="22"
            Margin="104,182,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Command="{Binding UpdateCommand}"
            CommandParameter="{Binding ElementName=TestTxt, Path=Text}"
            Content="更新" />
        <TextBox
            Name="TestTxt"
            Width="120"
            Margin="76,280,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Text="TextBox参数"
            TextWrapping="Wrap" />

运行效果:
WPF MVVM基础教程(三)命令/事件的绑定

其他事件绑定

除了点击事件通过Command绑定之外,想要绑定其他命令如MouseEnterSelectionChanged等事件,则需要导入专门的nuget包

WPF MVVM基础教程(三)命令/事件的绑定

安装Nuget包

安装Microsoft.Xaml.Behaviors.Wpf
支持net framework4.5以上和Net core包括net5,6,7
如果使用旧版本net framework则需要安装System.Windows.Interactivity.WPF

WPF MVVM基础教程(三)命令/事件的绑定WPF MVVM基础教程(三)命令/事件的绑定

使用

引入命名空间

 xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

在控件上添加触发器

 <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseEnter">
                    <i:InvokeCommandAction Command="{Binding StatusCommand}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>

WPF MVVM基础教程(三)命令/事件的绑定
命令跟之前一样定义

public CommandBase StatusCommand
{
    get
    {
        return new CommandBase(obj =>
        {
            Status = "鼠标进入";
        });
    }
}

效果:在鼠标进入时,右侧TextBlock显示鼠标进入

WPF MVVM基础教程(三)命令/事件的绑定

其他的如ComboBox选择事件

 <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <i:InvokeCommandAction Command="{Binding ChangedCommand}" CommandParameter="{Binding ElementName=Cbox, Path=SelectedItem}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>

WPF MVVM基础教程(三)命令/事件的绑定
效果:选项变化,Text跟随变化
WPF MVVM基础教程(三)命令/事件的绑定

特殊事件

如要绑定Button的鼠标按下和抬起,不能绑定MouseDownMouseUp,而是要绑定PreviewMouseDownPreviewMouseUp

命令绑定示例-源码下载文章来源地址https://www.toymoban.com/news/detail-484668.html

到了这里,关于WPF MVVM基础教程(三)命令/事件的绑定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF中TextBox使用KeyBinding绑定命令,键盘事件

        最近在做一个扫码枪识别条形码的功能,TextBox文本按回车键或者是扫码枪识别条形码自动触发查询功能,由于架构采用的是MVVM的开发模式,所以,刚开始采用KeyBinding的方式绑定命令,然后实现该功能;代码如下: 对应的ViewModel中绑定命令事件,代码如下所示     初步

    2024年02月14日
    浏览(52)
  • 关于WPF中Command绑定传参数以及将命令绑定到其它事件的方法

    前言:在WPF中,将命令绑定到一个Button的Command属性中是非常简单的事情,例如: 但是很多时候,我们要实现其它事件的命令绑定,以此实现彻底的MVVM开发模式,那就得用到微软另外一个神器了!它就是程序集System.Windows.Interactivity,在网上可以下载System.Windows.Interactivity.dll这

    2024年02月11日
    浏览(42)
  • WPF控件:密码框绑定MVVM

    以下是一种使用 MVVM 模式的方法: 首先,在 ViewModel 中添加一个属性来保存密码,我们可以使用 SecureString 类型。   创建一个附加属性来处理 PasswordBox 的密码变化,并将其绑定到 ViewModel 中的命令。   在 XAML 中,使用行为触发器来触发命令。 查看密码框的内容。      

    2024年04月24日
    浏览(36)
  • MVVM架构下wpf的密码框绑定

    背景:TextBox可以很轻松地对Text使用Binding,绑定ViewModel类里面的属性         即:Text=\\\"{Binding LoginId}\\\"/         但是使用PasswordBox的密码框就不行了,因为没有Text这个属性 那么就要自己实现一个PasswordBox的帮助类了 第一步添加Helper类 第二步:到xaml中使用帮助类添加PasswordB

    2024年02月09日
    浏览(40)
  • 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。 并且随着工业化的进展,以及几年前微软对.NET平台的开源,国内大多

    2024年02月06日
    浏览(63)
  • 工控视觉项目桌面端WPF源码,UI源码,已实现前后端MVVM数据绑定

    工控视觉项目桌面端WPF源码,UI源码,已实现前后端MVVM数据绑定。 除了两个柱状图用的第三方开源控件,其他都是原生自己写的,非常适合初学者熟悉语法、事件、触发器、MVVM 机制、布局容器,方便二次开发和修改 工控视觉项目桌面端WPF源码,UI源码,已实现前后端MVVM数据

    2024年02月20日
    浏览(45)
  • WPF 绑定binding都有哪些事件

    主要包含以下几个事件: 1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件 PropertyChanged:每当目标属性的值更改时,将立即更新源属性。 LostFocus:当目标元素失去焦点时,更新源属性。 Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。 Default:与

    2024年02月05日
    浏览(57)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件

    在我们开发的前端项目中,往往为了方便,都需对一些控件进行自定义的处理,以便实现快速的数据绑定以及便捷的使用,本篇随笔介绍通过抽取常见字典列表,实现通用的字典类型绑定;以及通过自定义控件的属性处理,实现系统字典内容的快捷绑定的操作。 在我们创建下

    2024年02月08日
    浏览(58)
  • WPF真入门教程23--MVVM简单介绍

            在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。与WinForm开发相比,我们一般

    2024年02月03日
    浏览(42)
  • 【WPF】异步任务更新UI、绑定命令、绑定字符串属性

    WPF异步任务 主界面 在视图模型中定义命令: 在主界面xaml中绑定命令:  创建命令实例:

    2024年02月09日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包