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

为什么我不能双击按钮在Silverlight 中创建事件处理程序?

在Silverlight中,双击按钮创建事件处理程序的功能并不直接支持。但是,您可以通过以下方法来实现这个功能:

  1. 在XAML代码中为按钮添加事件处理程序:
代码语言:<Button x:Name="myButton" Content="Click me" Click="myButton_Click" />
复制

然后在代码后台中定义事件处理程序:

代码语言:txt
复制
private void myButton_Click(object sender, RoutedEventArgs e)
{
    // 在这里编写您的事件处理代码
}
  1. 使用附加属性来实现双击事件处理程序:

首先,在代码后台中定义一个附加属性:

代码语言:csharp
复制
public class DoubleClickBehavior
{
    public static readonly DependencyProperty CommandProperty =
        DependencyProperty.RegisterAttached("Command", typeof(ICommand), typeof(DoubleClickBehavior), new PropertyMetadata(null, OnCommandChanged));

    public static ICommand GetCommand(DependencyObject obj)
    {
        return (ICommand)obj.GetValue(CommandProperty);
    }

    public static void SetCommand(DependencyObject obj, ICommand value)
    {
        obj.SetValue(CommandProperty, value);
    }

    private static void OnCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = d as Control;
        if (control != null)
        {
            control.MouseLeftButtonDown += Control_MouseLeftButtonDown;
        }
    }

    private static void Control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        var control = sender as Control;
        if (control != null && e.ClickCount == 2)
        {
            var command = GetCommand(control);
            if (command != null && command.CanExecute(null))
            {
                command.Execute(null);
            }
        }
    }
}

然后在XAML代码中为按钮添加附加属性:

代码语言:<Button x:Name="myButton" Content="Click me" local:DoubleClickBehavior.Command="{Binding MyCommand}" />
复制

最后,在代码后台中定义命令:

代码语言:csharp
复制
public ICommand MyCommand => new RelayCommand(MyCommandExecute);

private void MyCommandExecute()
{
    // 在这里编写您的事件处理代码
}

这样,您就可以在Silverlight中实现双击按钮创建事件处理程序的功能。

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

相关·内容

EXT.NET高效开发(四)——实用技巧

所以检测客户端是否安装了Silverlight也是不可避免的了。这点虽然与Extjs不能挂钩,但是也许大家也有用得着的地方。接下来的随笔还会介绍EXT.NET如何与Silverlight结合布局。...*上传附件以及施工计划需要Silverlight 4.0支持。*Silverlight是微软丰富型互联网应用程序策略的主要应用程序开发平台之一,请放心使用。'...DownLoad=true'; }); }); } 3)下载 总是有人问,为什么使用EXT.NET的服务器事件无法实现下载,或者没反应,后台写的操作也不起作用了,或者点击按钮就出乱码了...其实很简单,不要写在DirectEvent事件,或者另一个页面进行处理(放心,浏览器不会跳转)。...4)后台执行JS或者调用前台函数 如果你希望DirectEvent事件执行js,那么可以这么做: X.Js.Alert("测试"); X.Js.AddScript("

1.2K10

Silverlight项目中自定义控件开发Style学习笔记

2.silverlight是标准的Silverlight应用程序(或silverlight导航应用程序)....打开silverlight的mainpage.xaml,先导入命名空间(如果不能弹出下图中的选中项,请先重新编译生成解决方案) ?...tips:如果想体会asp.net开发把控件"拖"到页面的那种爽快,请切换到blend处理(vs2010也可以直接拖了,不过目前还只是beta版),MainPage.xaml上右击选择"Expression...即资源文件不能在设计视图下编辑,要编辑资源,请切换到资源面板 换到资源面板,展开Generic.xaml,会发现刚才定义的二个样式显示于此,每个后面还有一个编辑按钮 ?...点击style2后的编辑按钮,会发现左侧的Object And Timeline面板有所变化,style上右击,参考下图操作 ?

929100

【Java 进阶篇】HTML DOM 事件详解

双击事件(dblclick) 双击事件在用户双击页面上的元素时触发。它通常用于创建需要双击确认的操作,比如编辑文本或删除项目。...自定义事件 除了上述内置事件类型,您还可以创建自定义事件。自定义事件允许开发者需要时触发特定的事件,以满足应用程序的需求。...当按钮被点击时,事件处理程序的代码将被执行,这里我们简单地控制台中打印了一条消息。...('点击事件 - outer'); }); 在这个示例,当用户点击按钮时,事件会从inner元素开始冒泡,但由于我们inner的事件处理程序调用了event.stopPropagation...我们创建了一个任务清单,用户可以文本框输入新任务,点击“添加任务”按钮,然后将任务添加到任务列表

16720

基于Cairngorm的Silverlight开发 - part5

一个Cairngorm项目一般是这个样子: 一个Page.xaml -(***.xaml.cs这里就都不提了)程序的入口 一个App.xaml -用来存放Silverlight各种的资源(如:笔刷、...样式等)其后端代码可以捕获事件就好像asp.net的Global.asax文件 Command/ -用来存放所有的事件以及命令 Control/ -存放前端控制器 Controls/ -存放自定义用户控件...流程是这样,View中新增加一个按钮按钮抛出事件事件通过前端控制器调用相应的命令、命名根据事件的参数修改模型,最终呈现到视图中。...命令: 命令接收到了事件,并根据相应的参数改变模型。 视图: 这里回到ColorConfig控件上,点击了按钮后抛出变色的事件。...《silverlight 2 Random 随机数解决方案 》 前端控制器: 把事件和命令绑定起来。

68250

怎么创建 JavaScript 自定义事件

这是参与「掘金日新计划 · 4 月更文挑战」的第28天。 你肯定处理过很多的事件监听,比如点击事件或者表单提交。事件监听对许多用例来说很有帮助,但是有时我们需要创建自己的自定义事件处理复杂的交互。...在这片短文中,将告诉你有关创建自定义事件,侦听自定义事件以及创建双击自定义事件所要了解的内容。 怎么创建自定义事件 创建自定义事件听起来很困难,但是只需要下面简单的一行代码即可。...在这个例子,我们将创建一个双击事件,只要你短时间内单击一个元素,就会触发该事件。...该事件还会将按钮单击之间的总时间作为自定义数据传递。 首先,我们需要创建一个正常的单击事件监听器来确保是否有双击。...总结 自定义事件是 JavaScript 处理手势和双击事件的好方案,最重要的是,他们非常容易实现和使用。 【完】✅

1.3K10

《101 Windows Phone 7 Apps》读书笔记-Subservient Cat

OnNavigatedTo 事件处理,使用之前已经发现的指令来填充应用程序栏菜单。...因此,MediaElement的MediaOpened事件处理函数(该事件媒体文件加载并准备播放时触发),我们利用videoTimer视频播放1.48秒以后进行暂停。...但如果不使用其自动播放的特性,就必须在MediaElement_MediaOpened事件处理函数调用Play方法。 注意:为什么在手机连接到PC机的Zune后,无法播放手机上的视频?    ...如果我们想要弹出一个消息框,视频文件会在后台继续播放,但是定时器的Tick事件处理不能被调用。...当我开始写Subservient Cat应用程序的时候,OnNavigatedFrom事件调用了MediaElement的Stop方法,因为简介页面显示,而主页面处于堆栈时,担心不必要的视频播放会引来性能的下降

93090

怎么创建 JavaScript 自定义事件

你肯定处理过很多的事件监听,比如点击事件或者表单提交。事件监听对许多用例来说很有帮助,但是有时我们需要创建自己的自定义事件处理复杂的交互。...在这片短文中,将告诉你有关创建自定义事件,侦听自定义事件以及创建双击自定义事件所要了解的内容。 怎么创建自定义事件 创建自定义事件听起来很困难,但是只需要下面简单的一行代码即可。...,我们将创建一个双击事件,只要你短时间内单击一个元素,就会触发该事件。...该事件还会将按钮单击之间的总时间作为自定义数据传递。 首先,我们需要创建一个正常的单击事件监听器来确保是否有双击。...总结 自定义事件是 JavaScript 处理手势和双击事件的好方案,最重要的是,他们非常容易实现和使用。

1.4K10

抖音火爆表白小程序(C#语言实现)

视频演示 传送门 GIF动图演示 第一步:创建项目 创建windows窗体应用程序 更改项目名称和储存位置 选择合适的.NET框架 项目创建完成 第二步:设计窗体   通过左侧工具箱拖拽绘制窗口...添加控件 更改属性 图片加载方法 更改窗体属性 第三步:添加事件 添加[好呀]事件 双击[好呀]按钮,进入点击事件代码编辑区,添加如下代码。...", "^v^"); this.Dispose(); 添加[算了吧]事件 选中[算了吧]按钮,点击右侧属性栏事件图标,在下面找到MouseEnter事件双击MouseEnter事件添加如下代码。...MessageBox.Show("不回答不能退出哦!"..., "(╯_╰)╭"); e.Cancel = true; 第四步:调试生成打包程序 调试(F5/CTRL+F5) 调试程序发现算了吧按钮移动时会被其他控件遮挡(这和你一开始拖控件的顺序有关,如果出现这种情况

1.6K20

matinal:SAP ABAP SM30表格维护生成器增强(自动带出描述排序显示不同数据)

回车 点击FORM名称右边->编辑器下面的图标创建 include程序:LZPHX_TEXT2F01 在里面写FORM程序:FORM名称要和外面事件上写的一致。...如果报错:函数组 xxxxxxx不能处理创建或修改了屏幕没有激活函数组,SE80里面激活该函数组即可。...2、用屏幕增强的方式(其实和第1原理一样,就是实现的位置不同) SE11->表->菜单->实用程序->表格维护生成器 双击概述屏幕 的屏幕号,进入屏幕逻辑流 增加 MODULE ZGET_TEXT。...二、进入维护视图前,对数据进行筛选/排序   1、理论上事件的方式也是可以的,没做测试   2、屏幕增强的方式     SE11->表->菜单->实用程序->表格维护生成器     双击概述屏幕...三:隐藏删除按钮(或者别的快捷菜单按钮)   示例:隐藏删除按钮   PBO增加 MODULE pbo_hide_button.

29940

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

在这里,您的根ViewModel被传递给定位器,以确定应用程序的shell应该如何呈现。Silverlight,这将导致设置或您的RootVisual。WPF,这将创建主窗口。...事实上,WPF,引导程序将此委托给WindowManager,这使想到……ViewLocator使用的第二个位置是WindowManager,它调用它来确定任何对话框ViewModels应如何呈现...不提供这种开箱即用的实现,因为它不能保证Silverlight成功。原因是Silverlight不允许您获取私有字段的值,除非调用代码是定义字段的代码。...但是,如果所有视图都是单个程序集中定义的,那么可以通过与视图相同的程序集中创建新实现来轻松地进行刚才描述的修改。...例如,在上面的Xaml,当为按钮创建ActionMessage时,将查找按钮的ElementConvention并调用其CreateTrigger函数。

2.7K20

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

当触发器发生时,“消息”元素树冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是主/细节场景。...因此,如果您在ViewModel上有一个名为“Save”的方法,UI中有一个名为“Save”的按钮,我们将自动为“Click”事件创建一个EventTrigger,并为“Save”方法分配一个ActionMessage...例如,如果您确实需要,您可以为按钮“MouseMove”而不是“Click”创建约定事件。 Binding 约定 我们还支持基于约定的数据绑定。这也适用于x:Name。...Window Manager窗口管理器 此服务提供以视图模型为中心的窗口显示方式(Silverlight的ChildWindow、WPF的Window、Windows Phone的自定义本机样式主机...一直很小心地使ApplicationDeveloperAPI与Caliburn的完整版本保持一致。事实上,Caliburn.Micro中所做的改进正在被重新折叠到Caliburn v2

1.7K20

Silverlight 3 创建一个简单的Behavior

ilverlight 3 创建一个简单的Behavior 最近一直研究Silverlight 3,并同时用3的新特性来做一些演练,期间学到了不少新东西该倒了总结一下的时候了。...开发一个demo的过程采用了MVVM的开发模式,这个模式能很方便的直接使用blend来做数据的绑定,但是对一些Event、事件的触发来实现相对应的动画效果就比较复杂,刚开始一直想用数据绑定的方式来绑定...Event,最终发现绑定按钮的点击事件比较方便,但是绑定别的比如MouseEnter、MouseMove等的事件就相对复杂麻烦了,这时突然想起Behavior才眼前一亮发现自己走了弯路。...这里有一篇对Behavior的介绍 http://www.cnblogs.com/nasa/archive/2009/03/23/silverlight-3-behaviors.html 进入正题,这里要介绍的是如何来做一个最简单的...这样再回到Blend,Ctrl+shift+b 快捷键编译一下项目就会在资源视图中看到刚刚创建的Behavior。 将其拖拽到Button上,并设计其属性如下 F5运行

66170

C#上位机开发(二)—— Hello,World

,当按下Clear按钮时,文本框清空;这属于人机交互,一般人机交互的处理方式有两种,第一种是查询处理方式,比如在DOS系统下、Linux系统等命令行下的程序设计,第二种是事件处理机制,有了很多的优越性,...由传统的查询法耗费CPU一直检测,变成了事件处理机制下的主动提醒告知,大幅度减轻CPU资源浪费,事件处理机制中有以下几个概念: 事件源(EventSource):描述人机交互事件的来源,通常是一些控件...; 事件(ActionEvent):事件源产生的交互内容,比如按下按钮事件处理:这部分也C++中被叫做回调函数,当事件发生时用来处理事件;   注:这部分在单片机也是如此,中断源产生中断,然后进入中断服务函数进行响应...;   清楚了这几个概念后,就来实现我们想要的功能,按下按钮是一个事件,那么,如何编写或者在哪编写这个事件事件处理函数呢?...VS很方便,只需要双击这个控件,VS就会自动将该控件的事件处理函数添加进Form1.cs文件,此处双击“Send”按钮,可以看到VS自动添加进了 private void button1_Click

1.9K41

上位机开发二----第一个程序hallo world

,当按下Clear按钮时,文本框清空;这属于人机交互,一般人机交互的处理方式有两种,第一种是查询处理方式,比如在DOS系统下、Linux系统等命令行下的程序设计,第二种是事件处理机制,有了很多的优越性,...由传统的查询法耗费CPU一直检测,变成了事件处理机制下的主动提醒告知,大幅度减轻CPU资源浪费,事件处理机制中有以下几个概念: 事件源(EventSource):描述人机交互事件的来源,通常是一些控件...; 事件(ActionEvent):事件源产生的交互内容,比如按下按钮事件处理:这部分也C++中被叫做回调函数,当事件发生时用来处理事件;   注:这部分在单片机也是如此,中断源产生中断,然后进入中断服务函数进行响应...;   清楚了这几个概念后,就来实现我们想要的功能,按下按钮是一个事件,那么,如何编写或者在哪编写这个事件事件处理函数呢?...VS很方便,只需要双击这个控件,VS就会自动将该控件的事件处理函数添加进Form1.cs文件,此处双击“Send”按钮,可以看到VS自动添加进了 private void button1_Click

77741

SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService)

题外话: 对不住各位,本打算年前把这个系列写完,结果由于杂务缠身一直推到年后 特别痛恨我自己!觉得不但对不起各位!也对不起自己。 最近烦躁不安,不能专心向学。也不知道如何是好。...…… 好吧,言归正传 说个前提条件: 此项目虽然使用了silverlight 4.0 但是服务端只能在dotNet3.5下运行 这也是我们为什么自己实现riaService的原因 实体层设计 由于有这个限制条件...void ValidateProperty(string PropertyName, object value) { } } } 这个类虽然在这里看上去没什么用 但是silverlight...特性dotNet3.5也是不存在的 同理,我们创建了DisplayAttribute特性,也是为了使用Silverlight4.0的客户端特性 namespace System.ComponentModel.DataAnnotations...RIA Service的人一定都知道 每次编译的时候都会在Silverlight程序集中生成如下目录和文件 此文件就包含了服务代理和实体类型 那么为了达到与RIA Service一样的效果 我们为服务端程序集增加了

70630

ChatGPT自动化编程:三分钟用Tkinter搞定计算器

计算器的功能主要是单击除了“=”按钮外的其他按钮,会将按钮文本追加到计算器上方的文本输入框,点击“=”按钮,会动态计算文本输入框的表达式,双击文本输入框,会清空文本。...(2)响应按钮单击动作:单击非“=”按钮,会将按钮文本追加到文本输入框,点击“=”按钮,会动态计算文本输入框的表达式。 (3)文本框响应双击动作:双击文本框,会清空文本框的内容。...# 输入框追加文本 entry.insert('end', text) # 绑定按钮的点击事件 Button(root, text=button, font=('Arial...但这个Button对象并没有单独保存在变量,导致了后面的代码无法再次使用这个Button对象,所以需要按如下方式手动改进一下: for button in buttons: # 创建按钮并放置相应的网格位置...['text'] # 输入框追加文本 entry.insert('end', text) # 绑定按钮的点击事件 b.bind

12610
领券