首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在自定义TextBox的EventTrigger上从CallMethodAction调用方法

在自定义TextBox的EventTrigger上无法直接使用CallMethodAction调用方法的原因是,EventTrigger只能触发XAML中的事件,而CallMethodAction是用于调用ViewModel中的方法。因此,我们需要使用其他方式来实现在自定义TextBox的EventTrigger上调用方法。

一种常见的解决方案是使用MVVM(Model-View-ViewModel)模式。在MVVM模式中,我们可以将TextBox的事件与ViewModel中的命令进行绑定,然后在命令的执行方法中调用所需的方法。

以下是实现该功能的步骤:

  1. 创建一个自定义的TextBox,并在XAML中定义所需的事件。例如,我们可以在TextBox的LostFocus事件上触发命令。
代码语言:xml
复制
<TextBox>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="LostFocus">
            <i:InvokeCommandAction Command="{Binding LostFocusCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>
  1. 在ViewModel中创建一个实现了ICommand接口的命令,并在命令的执行方法中调用所需的方法。
代码语言:csharp
复制
public class MyViewModel : INotifyPropertyChanged
{
    public ICommand LostFocusCommand { get; private set; }

    public MyViewModel()
    {
        LostFocusCommand = new RelayCommand(LostFocus);
    }

    private void LostFocus()
    {
        // 调用所需的方法
    }
}
  1. 在页面的代码-behind中,将页面的DataContext设置为ViewModel的实例。
代码语言:csharp
复制
public partial class MyPage : Page
{
    public MyPage()
    {
        InitializeComponent();
        DataContext = new MyViewModel();
    }
}

通过以上步骤,我们可以在自定义TextBox的EventTrigger上通过绑定命令来调用ViewModel中的方法,从而实现所需的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 在Splunk上安装自定义应用反弹Shell的方法

    Splunk是一个用于搜索,分析和可视化数据的软件平台。通常,Splunk中都会包含着各种数据,其中一些可能是较为敏感的数据。因此,对于渗透测试人员而言它的价值不言而喻。...想要获得对Splunk的访问权限,可以通过猜密码或重用之前获取到的密码尝试登录。曾经,我有过使用“admin:admin”或“admin:changeme”登录进入管理控制台的情况。...工具的使用非常简单。首先,你只需从Splunk Shells GitHub页面下载其最新版本。 登录Splunk管理控制台后,依次单击“App”栏和“Manage Apps”。 ?...安装app后,最后要做的就是获取shell。这里会有一些选项,我选择的是通过Metasploit创建的标准反向shell。 ?...以上测试是在Splunk 7.0上进行的,一切都非常的顺利!Splunk通常以root身份运行,这为攻击者提供了枚举主机其他信息的机会,而不仅仅是局限在数据库范围。

    1.2K20

    #从源头解决# 自定义头文件在VS上出现“无法打开源文件“XX.h“的问题

    大家好,又见面了,我是你们的朋友全栈君。...自己编写了一个头文件 ,在主函数中通过#include引用时出现了 无法打开源文件的问题,通过网上查阅,大多数人的做法是:右键项目->属性->VC++目录->包含目录->下拉剪头->编辑,在对话框中加入...通过进一步研究,发现问题是自己混淆了 #include”xx.h” 和 #include 的用法, #include 表示直接从编译器自带的函数库中寻找文件,编译器从标准库路径开始搜索....xxh include”xx.h” 表示先从自定义的文件中找 ,如果找不到在从函数库中寻找文件,编译器从用户的工作路径开始搜索 xx.h 如果我们通过的方式引用自己编写的头文件,必然会出现无法找到与源文件的问题...,因为我们的文件放在了用户目录下,上面的解决办法本质上是通过将会用户目录追加到编译器搜索范围内,其实通过将换成” “就可以解决问题了。

    6.4K41

    .NET Core 3 WPF MVVM框架 Prism系列之命令

    在代码中,我们通过using Prism.Mvvm引入继承BindableBase,因为我们要用到属性改变通知方法SetProperty,这在我们上一篇就知道了,再来我们using Prism.Commands...(); 其实通过prism源码我们可以知道RaiseCanExecuteChanged方法就是内部调用ICommand接口下的CanExecuteChanged事件去调用CanExecute方法 public...,其实在该方法内部中也是会去调用RaiseCanExecuteChanged方法 我们通过上面代码我们可以会引出两个问题: 如何创建带参数的DelegateCommand?...现在我们有这种需求,我们要在这个界面基础上新增第二个Textbox,当Textbox的文本变化时,需要将按钮的Name和第二个Textbox的文本字符串合并更新到第一个Textbox上,我们第一直觉肯定会想到用...上面我们在xaml代码就是添加了对TextBox的TextChanged事件的Blend EventTrigger的侦听,每当触发该事件,InvokeCommandAction就会去调用TextChangedCommand

    1.9K50

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    (在根节点上使用,如Window/UserControl/Page。) Bind.ModelWithoutContext 首先查看-将Action.Target设置为指定实例。将约定应用于视图。...首先,我们现在使用的是一个完全的POCO类;这里没有INPC的问题。其次,我们在SayHello方法中添加了一个输入参数。...这有一点很好,每次参数值更改时,我们都会调用与操作关联的guard方法(在本例中为CanSayHello),并使用其结果更新ActionMessage附加到的UI。继续运行应用程序。...通过这些功能,您可以方便地访问常见的上下文信息: $eventArgs 将EventArgs或输入参数传递给操作。注意:对于保护方法,这将是null,因为触发器实际上没有发生。...对于button,该属性恰好是“DataContext”,而TextBox默认为Text,SelectedItem的选择器等。在视图中使用对另一个命名控件的引用而不是$this时,也会发生同样的情况。

    2.1K20

    MongoDB 在系统数据库local上无法创建用户的解决方法

    那么,如果其他部门(例如BI团队)需要抽取数据,从 local.oplog.rs中读取解析一个不错的选择。...oplog位于local数据下面,为了将权限最小化,大家需要创建此库的权限(还可以将权限细化到集合,再次不讨论)。 习惯性的,在local数据库下面创建,但是报错了。...注意:(1)在程序端配置连接字符串时,相应的需要添加登入验证数据库参数 --authenticationDatabase admin (2)通过NoSQLBooster登入时,Auth DB 选择执行创建命令的数据库名字...(本实例为admin)  Default Database 的编辑项,选择oplog所在的local数据库 登入成功 (但是在测试过程中,发现此工具在这个小权限下,登入可以成功,但是有时候执行命令时报错...还需探究根本原因) (3) 建议数据的拉取,在辅助节点上拉取,减少主库的压力。

    1.8K10

    Vmware虚拟机在M1上无法连接网络的解决方法

    在M1上安装上mware虚拟机,但是无法连接网络,怎么办?下面就给大家介绍一下vm虚拟机无法连接网络的解决办法。https://www.macz.com/mac/8890.html?...id=NzY4OTU4Jl8mMjcuMTg2LjguMTM3打开vm虚拟机,在左上角打开虚拟机-安装vmare tools,如图:点击安装。在vm虚拟机的右下角可以看到安装成功了。...右键点下方的上下文菜单,找到设备管理器,打开。...点击其他设备-以太网控制器-更新驱动程序,如图:选择第二个:浏览我的电脑以查找驱动程序,如图:点击“浏览”选择DVD驱动器然后点击“确定”点击“下一页”可以看到以太网适配器已经安装完成,点击“关闭”即可...以上就是Vmware虚拟机无法连接网络的解决方法,希望对您有所帮助

    2.1K40

    Unity 基于eventTriggers的3D场景交互系统「建议收藏」

    Unity 基于eventTriggers的3D场景交互系统 Unity里的3D项目有时候需要大量的交互,而且是无UI的交互。...这时候可以像UI系统里,使用eventTrigger去制作交互系统。但是这个缺少自定义功能,所以我写了个自定义交互系统。这个交互系统可以做到什么呢?直接上图(仅为演示DEMO)。...点击触发事件 移动并且事件 复杂的交互 该系统采用的工厂设计模式,将你需要的功能写入EventTriggersDemo,将你的功能码和相关设置写入(需继承TriggerHelper...RemoveHelp(); } #endregion /// /// 必须调用...功能 //以下为虚方法形式的功能自定义,也可直接自定义(不开源,请自行研究) //除了鼠标交互系统,按键交互也可以制作。

    96520

    【愚公系列】2023年10月 WPF控件专题 StatusBar控件详解

    WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。...自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。...StatusBar控件通常包含一些子元素,例如TextBlock控件、ProgressBar控件、Image控件、Button控件等,这些子元素可以通过布局来组合显示在StatusBar上。...显示操作提示信息,例如鼠标悬停在按钮上时,显示按钮用途的简短文本提示。显示应用程序的错误信息。显示底部状态栏,例如在应用程序中添加一个状态栏,可以在底部显示状态信息。...StatusBar控件在WPF应用程序中通常用于显示应用程序的整体状态信息或操作提示信息,以帮助用户更好地理解应用程序的运行状态。

    68211

    装正版win10,提示"无法在驱动器的分区上安装windows。解决方法(亲测)

    装正版win10:提示"无法在驱动器的分区上安装windows。选中的磁盘采用GPT分区形式。...解决方法 原因: win8/win10系统均添加快速启动功能,预装的win8/win10电脑默认都是UEFI引导和GPT硬盘,传统的引导方式为Legacy引导和MBR硬盘,UEFI必须跟GPT对应,同理...如果BIOS开启UEFI,而硬盘分区表格式为MBR则无法安装;BIOS关闭UEFI而硬盘分区表格式为GPT也是无法安装Windows。...多数电脑同时支持UEFI引导和Legacy引导,在bios里面可以设置引导选择方式 解决方法: 按win+R输入cmd进入命令提示符窗口 ?...输入select disk 0 确定,后面的0表示要转换磁盘为0的格式 ?

    8.2K20

    C# WPF MVVM开发框架Caliburn.Micro入门介绍①

    所有参数都会自动转换为方法的签名。此机制还允许“Action.Target”独立于DataContext而变化,并允许在UI中的不同点从触发器声明它。...当触发器发生时,“消息”在元素树中冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是在主/细节场景中。...除了调用之外,该机制还支持“CanExecute”保护。如果该操作具有同名的相应属性或方法,但前面有“Can”一词,则该操作的调用将被阻止,UI将被禁用。操作还支持协同路由(见下文)。...因此,如果您在ViewModel上有一个名为“Save”的方法,在UI中有一个名为“Save”的按钮,我们将自动为“Click”事件创建一个EventTrigger,并为“Save”方法分配一个ActionMessage...不多只需从Bootstrapper继承并将自定义Bootstrapper的实例添加到应用程序的ResourceDictionary中。完成。

    1.8K20

    WPF|快速添加新手引导功能(支持MVVM)

    并且提示框显示的位置还跟随目标控件在主窗体中的位置灵活变换,不至于显示在蒙版窗体之外,如下图所示: 当目标控件右侧空间足够显示引导提示框时,引导提示框就显示在目标控件右侧;在右侧空间不足时,则将引导提示框显示在目标控件左侧...GuideControl:引导控件,用于目标控件无法获取到自己的窗体这种(即无法获取在窗体中的位置),比如您开发的程序为第三方程序插件这种,上面的代码即是使用此引导控件实现的效果。...ListBox子项ListBoxItem内,而引导控件GuideControl可以在ListBox的外层容器之上; GuideWindow 用于贴在目标控件所在的窗体上,GuideWindow 作为目标控件窗体的子窗体...,Show()在目标控件窗体上,不能使用ShowDialog()的方式(为啥?...,修改位置见 GuideControl 和 GuideWindow的方法 ShowGuide(FrameworkElement?

    2.5K10

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    如果DataContext为null,则只有在该情况下才会调用LocateForViewType。最后要注意的是,自动初始化组件调用在性质上不受view first支持。...它通过在名为GetNamedElementsInScope的静态ExtensionMethods类上使用func来实现这一点。5基本上,该方法有两个功能。首先,它确定了要在其中搜索元素的范围。...Action Matching 基础 在找到约定绑定的元素后,ViewModelBinder要做的下一件事是检查它们是否与ViewModel上的方法匹配。...一旦找到匹配项,我们就可以从ConventionManager获取ElementConventions,这样我们就可以确定该元素上的数据绑定方式。...我们得到TextBox的ElementConvention,它的ParameterProperty设置为“Text”。因此,我们从something.Text创建MyMethod的参数。

    2.8K20
    领券