代码非标准,仅供参考。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Controls;
  5. using Telerik.Windows.Controls;
  6. namespace slTest
  7. {
  8. public partial class MainPage : UserControl
  9. {
  10. public MainPage()
  11. {
  12. InitializeComponent();
  13. this.combo.SelectionChanging += combo_SelectionChanging;
  14. }
  15. void combo_SelectionChanging(object sender, SelectionChangingEventArgs e)
  16. {
  17. e.Cancel = this.isCancel.IsChecked.Value;
  18. }
  19. }
  20. public class Combo : Telerik.Windows.Controls.RadComboBox
  21. {
  22. public Combo()
  23. {
  24. base.SelectionChanged += Combo_SelectionChanged;
  25. }
  26. private object _orginalItem { get; set; }
  27. void Combo_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
  28. {
  29. if (e.AddedItems.Count != 0)
  30. {
  31. if (this._orginalItem == e.AddedItems[0]) return;
  32. if (SelectionChanging != null)
  33. {
  34. var addedItems = new List<Object>();
  35. if (e.AddedItems.Count != 0)
  36. addedItems.AddRange(e.AddedItems.Cast<Object>());
  37. var removedItems = new List<Object>();
  38. if (e.RemovedItems.Count != 0)
  39. removedItems.AddRange(e.RemovedItems.Cast<Object>());
  40. var cancelEventArgs = new SelectionChangingEventArgs(addedItems, removedItems, true);
  41. SelectionChanging(sender, cancelEventArgs);
  42. if (cancelEventArgs.Cancel)//模拟cancel为true
  43. {
  44. var removedItem = e.RemovedItems.Count != 0 ? e.RemovedItems[0] : null;
  45. this._orginalItem = removedItem;
  46. this.SelectedItem = removedItem;
  47. }
  48. }
  49. }
  50. }
  51. public event SelectionChangingEventHandler SelectionChanging;
  52. }
  53. public delegate void SelectionChangingEventHandler(object sender, SelectionChangingEventArgs e);
  54. }
  1. <UserControl x:Class="slTest.MainPage"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local ="clr-namespace:slTest"
  7. xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input"
  8. mc:Ignorable="d"
  9. d:DesignHeight="300" d:DesignWidth="400">
  10. <Grid x:Name="LayoutRoot" Background="White">
  11. <StackPanel Width="300" HorizontalAlignment="Left" Margin="5">
  12. <local:Combo x:Name="combo">
  13. <telerik:RadComboBoxItem>1</telerik:RadComboBoxItem>
  14. <telerik:RadComboBoxItem>2</telerik:RadComboBoxItem>
  15. <telerik:RadComboBoxItem>3</telerik:RadComboBoxItem>
  16. </local:Combo>
  17. <TextBox x:Name="selectedValue"></TextBox>
  18. <CheckBox x:Name="isCancel"></CheckBox>
  19. <Button Click="Button_Click">Button</Button>
  20. </StackPanel>
  21. </Grid>
  22. </UserControl>

为RadComboBox添加SelectionChanging事件的更多相关文章

  1. js 页面无滚动条添加滚轮事件

    当页面无滚动条时,滑动滚轮时window.onscroll事件不会相应,此时应该去添加滚轮事件 var MouseWheelHandler=function(e){ e.preventDefault( ...

  2. DataGridView 在下拉框添加下来事件

    DataGridView中有一种下拉框式的列,给这个列添加下拉事件时需要转化一下才可以绑定下拉事件 /// <summary> /// 服务类型 /// </summary> ...

  3. asp.net中的ListBox控件添加双击事件

    问题:在Aspx页里的ListBox A中添加双击事件,将选中项添加到另一个ListBox B中,双击ListBox B中的选中项,删除当前选中项 页面: <asp:ListBox ID=&qu ...

  4. Unity3D NGUI 给button按钮添加单间事件

    Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...

  5. Trace-跟踪高消耗的语句需添加哪些事件

    通常接手一台数据库服务器后,我们会开启Profiler跟踪来了解SQL Server的繁忙情况.我们首先会想到的是监控CPU或Duration超过某一阈值的语句/过程.那么所创建的Trace添加哪些事 ...

  6. ABAP QUERY报表添加双击事件

    问题:一个query报表程序,客户想要每一条能编辑并打印. 解决:直接给query添加双击事件,调用新report. 1.创建report,用paramater定义要从query结果中传过来的数据. ...

  7. 设置代码ios 6添加日历事件No calendar has been set.错误

    查了好多资料,发明还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 在iOS 6做日历事件添加时,来来回回报错,No calendar has been set ...

  8. C#避免踩坑之如何添加paint事件

    看截图: 首先,右击->属性 然后出来这个界面. 接下来,注意看这个界面的上面:鼠标悬停这个闪电符号,看到没,事件!! 那个闪电符号,点它! 然后下拉找到这个: 你要事先在代码里面添加Form1 ...

  9. Qt 给控件QLineEdit添加clicked事件方法

    做Qt开发的会知道QLineEdit是默认没有clicked事件的,但是Qt有很好的一套信号/槽机制,而且Qt是基于C++面向对象的思想来设计的,那么我们就很容易通过自己定义一些类,重写QLineEd ...

随机推荐

  1. 重温delphi之控制台程序:Hello World!

    原文:重温delphi之控制台程序:Hello World! 这二天用c#开发ActiveX时,发现不管怎么弄,c#就是没办法生成ocx的纯正activeX控件,而且还要强迫用户安装巨大的.net f ...

  2. 向日葵sunlogin配置

    客户端配置: xxxx@TIM sunlogin_linux_1.0.0.25020]$ lsbin  html  install_sunlogin.sh  readme.txt  script  u ...

  3. MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天

    mysql 获取当年第一天的年月日格式:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); MySQL里获取当前week.month ...

  4. ssh 实体关系分析确立(ER图-实体关系图)

    比較简单的方式就是依据模仿同类产品,依据同类产品的进行模仿,表单就是一个起码要加的字段,然后依据项目须要额外添加字段. 注意:实体类之间的引用关系还须要考虑性能的影响.如:单向或是双向. 表设计: 设 ...

  5. Unix/Linux周边环境C编程新手教程(1) Solaris 11 64bit环境结构

    Unix/Linux许多的版本号.我们推荐Unix/Linux刚開始学习的人选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装Solaris 11 64位而且配置好C/C++开发 ...

  6. windows phone (23) ScrollViewer元素

    原文:windows phone (23) ScrollViewer元素 ScrollViewer类表示可包含其他可见元素的可滚动区域,一般会用在屏幕的宽度和高度不够用时,作为一种延伸使用,参考书上称 ...

  7. 【翻译】Why JavaScript Is and Will Continue to Be the First Choice of Programmers

    花费2半小时,那么最终会被翻译.假设有问题,请提出,毕竟,自己的6不超过级别. 附加链接 Why JavaScript Is and Will Continue to Be the First Cho ...

  8. POJ 2250 Compromise (UVA 531)

    LCS问题.基金会DP. 我很伤心WA非常多.就在LCS问题,需要记录什么路. 反正自己的纪录path错误,最后,就容易上当. 没有优化,二维阵列,递归打印,cin.eof() 来识别 end of ...

  9. JAVA学习课第二十八届(多线程(七))- 停止-threaded多-threaded面试题

    主密钥 /*  * wait 和 sleep 差别?  * 1.wait能够指定时间也能够不指定  * sleep必须指定时间  * 2.在同步中,对CPU的运行权和锁的处理不同  * wait释放运 ...

  10. xhost和XServer相关概念汇总

    1.xhost 控制什么人可以访问当前主机上的增强 X-Windows.语法:xhost [ + | - ] [ Name ] 2.xhost 是用来控制X server访问权限的.通常当你从host ...