zoukankan      html  css  js  c++  java
  • 为RadComboBox添加SelectionChanging事件

    代码非标准,仅供参考。

    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>
    
  • 相关阅读:
    关于-webkit-border-image的理解
    手机浏览pc网页,字体显示比样式中设置的字体更大
    网页乱码原理
    浏览器的钉点调试的作用
    zepto中的多点触摸
    parentNode和offsetParent的区别,仅仅只是定位相对不一样么
    ckeckbox的默认样式,label for添加toggle后失效,美化checkbox
    当stop()遇到animate()的回调函数
    有联系的标识变量的变化一定要同步
    当relative遇上z-index,半透明度不阻断事件捕获
  • 原文地址:https://www.cnblogs.com/grj1046/p/4916895.html
Copyright © 2011-2022 走看看