代码非标准,仅供参考。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
using Telerik.Windows.Controls; namespace slTest
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.combo.SelectionChanging += combo_SelectionChanging;
} void combo_SelectionChanging(object sender, SelectionChangingEventArgs e)
{
e.Cancel = this.isCancel.IsChecked.Value;
}
} public class Combo : Telerik.Windows.Controls.RadComboBox
{
public Combo()
{
base.SelectionChanged += Combo_SelectionChanged;
} private object _orginalItem { get; set; } void Combo_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
{
if (e.AddedItems.Count != 0)
{
if (this._orginalItem == e.AddedItems[0]) return;
if (SelectionChanging != null)
{
var addedItems = new List<Object>();
if (e.AddedItems.Count != 0)
addedItems.AddRange(e.AddedItems.Cast<Object>());
var removedItems = new List<Object>();
if (e.RemovedItems.Count != 0)
removedItems.AddRange(e.RemovedItems.Cast<Object>()); var cancelEventArgs = new SelectionChangingEventArgs(addedItems, removedItems, true);
SelectionChanging(sender, cancelEventArgs);
if (cancelEventArgs.Cancel)//模拟cancel为true
{
var removedItem = e.RemovedItems.Count != 0 ? e.RemovedItems[0] : null;
this._orginalItem = removedItem;
this.SelectedItem = removedItem;
}
}
}
} public event SelectionChangingEventHandler SelectionChanging;
} public delegate void SelectionChangingEventHandler(object sender, SelectionChangingEventArgs e);
}
<UserControl x:Class="slTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local ="clr-namespace:slTest"
xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White">
<StackPanel Width="300" HorizontalAlignment="Left" Margin="5">
<local:Combo x:Name="combo">
<telerik:RadComboBoxItem>1</telerik:RadComboBoxItem>
<telerik:RadComboBoxItem>2</telerik:RadComboBoxItem>
<telerik:RadComboBoxItem>3</telerik:RadComboBoxItem>
</local:Combo>
<TextBox x:Name="selectedValue"></TextBox>
<CheckBox x:Name="isCancel"></CheckBox>
<Button Click="Button_Click">Button</Button>
</StackPanel>
</Grid>
</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. SVN中正确的add操作和delete操作

    add操作: delete操作:

  2. 主席树(可持久化线段树) 静态第k大

    可持久化数据结构介绍 可持久化数据结构是保存数据结构修改的每一个历史版本,新版本与旧版本相比,修改了某个区域,但是大多数的区域是没有改变的, 所以可以将新版本相对于旧版本未修改的区域指向旧版本的该区域 ...

  3. Windows Phone开发(47):轻松调用Web Service

    原文:Windows Phone开发(47):轻松调用Web Service 众所周知(除了没用过VS的),在VS里面调用Web Service是一件很愉快的事情,不解释,相信很多朋友在以前的项目中肯 ...

  4. NYOJ 47 河问题

    时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描写叙述 在漆黑的夜里,N位旅行者来到了一座狭窄并且没有护栏的桥边.假设不借助手电筒的话,大家是不管怎样也不敢过桥去的.不幸的是 ...

  5. ASP.NET之Cookie(坑爹的Response.Cookies.Remove)

    原文:ASP.NET之Cookie(坑爹的Response.Cookies.Remove) 在web开发中Cookie是必不可少的 .NET自然也有一个强大的Cookie操作类,我们用起来也非常方便, ...

  6. C语言cgi(1)

    1Columbia Universitycs3157 – Advanced ProgrammingSummer 2014, Lab #2, 60ish pointsJune 9, 2014Follow ...

  7. oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

    一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...

  8. 阅读:AirBag Boosting Smartphone Resistance to Malware Infection

  9. POJ 2738 Two Ends(记忆化)

    Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...

  10. C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!!

    原文:C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!! 一般我们在开发Windows Phone 8 时,会考虑到各国语言的问题,但是你有想过吗?用实体手机 ...