重写控件

自定义ListBox类
C# code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 public class myListBox : System.Windows.Controls.ListBox
    {
        protected override DependencyObject GetContainerForItemOverride()
        {
            return new myListBoxItem();
        }

    }
    public class myListBoxItem : System.Windows.Controls.ListBoxItem
    {
        protected override void OnSelected(System.Windows.RoutedEventArgs e)
        {
            DependencyObject dep = (DependencyObject)e.OriginalSource;

            while ((dep != null) && !(dep is ListBoxItem))
            {
                dep = VisualTreeHelper.GetParent(dep);
            }

            if (dep == null)
                return;

            ListBoxItem item = (ListBoxItem)dep;

            if (item.IsSelected)
            {
                item.IsSelected = !item.IsSelected;
                //e.Handled = true;
            }
            base.OnSelected(e);
        }
    }

页面引用
C# code
?
1
2
3
4
5
  xmlns:control="clr-namespace:wpf.DependencyControl"

// 在Grid 中写
  <control:myListBox x:Name="myListBox" Width="100" Height="100" SelectionMode="Single"
                               SelectionChanged="myListBox_SelectionChanged">

// 后台cs代码
C# code
?
1
2
3
4
5
6
7
 private void myListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            object o = myListBox.SelectedItem;
            if (o == null)
                return;
            MessageBox.Show(o.ToString());
        }
时间: 2024-10-19 23:11:08

重写控件的相关文章

简单的重写控件

我们知道最基本的就是继承View,下面我们结合一个例子对重写进行简单地分析:        继承一个view,都会有一个或多个构造方法,在不同的时候调用到不同的构建方法,一般会重写三个方法,onMeasure();onLayout();onDraw();分别是测量,定位和画 下面说下,android中重写view时,经常会遇到的混淆: requestLayout(),invalidate(),postInvalidate()方法 requestLayout:当view确定自身已经不再适合现有的区

WPF 控件功能重写(Combobox回车搜索)

前言:在我们日常使用软件的时候,Combobox会让用户很方便的选择出需要的东西,但是ComboBox中的下拉行数过多时就不那么好用了. 如果在项目中有很多这样的ComboBox控件的话,我们可以考虑重写控件. 重写后的的工具类:(重写了ComboBox的OnkeyUp事件,即:键盘松开) class EnterComboBox : ComboBox { protected override void OnKeyUp(KeyEventArgs e) { if (e.Key == Key.Ente

iOS UI控件没有显示时的调试技巧

1.遇到UI控件没有显示的问题,可以给这个控件设置背景色 假设这个控件是UIBUtton 如果背景色能显示,那问题就出在image和title值为空 如果背景色不能显示,重写控件的description方法,把控件的frame打印出来分析 2.以下是打印UIView的frame的分类 #import <UIKit/UIKit.h> @interface UIView (Log) @end 1 #import "UIView+Log.h" 2 3 @implementatio

在WinForm应用程序中,使用选项卡控件来加载不同的Form界面!

1 TabPage tp=new TabPage(); 2 your选项卡控件.Controls.Add(tp); 3 4 From1 frm=new Form1(); 5 frm.TopLevel = false; 6 frm.Dock = DockStyle.Fill; 7 frm.FormBorderStyle =FormBorderStyle.None; 8 9 tp.Controls.Add(frm); 10 frm.Visible = true; 最近想了一些关于子窗体嵌套显示在父窗

WPF Step By Step 控件介绍

WPF Step By Step 控件介绍 回顾 上一篇,我们主要讨论了WPF的几个重点的基本知识的介绍,本篇,我们将会简单的介绍几个基本控件的简单用法,本文会举几个项目中的具体的例子,结合这些 例子,希望我们可以对WPF的掌握会更深刻.本文涉及的内容可能较多.请大家慢慢看看.错误之处,还请指出. 本文大纲 1.基本控件介绍与用法. 基本控件介绍与用法 文本控件 Label控件 label控件:一般用户描述性文字显示. 在Label控件使用时,一般给予用户提示.用法上没有什么很特殊的,label

ExtJs4.0日期控件只显示年月按年月格式会跳月的解决办法

如果是Ext.form.panel的话,只要设置一下属性就可以.如下代码: { text : '期间', width : 80, sortable : true, dataIndex : 'accountPeriod', format : 'Ym' } 如果是Ext.grid.panel的话,比较麻烦.网上也有各位大神的解决方法,不过都比较麻烦,要重写控件,我向一位大牛请教后整理出一个非常简单的方法,代码: Ext.define('Dpap.branchWithHold.WithHoldGrid

Android高级_视频播放控件

一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用parse(),传入(”android.resource://”+getPackageName()+”/”+R.raw.video)当前字符串获取资源路径: (4)为视频控件设置播放路径,VideoView对象调用setVideoURI(),传入Uri对象: (5)开始播放,VideoView对象调用

Asp.net自定义单选复选框控件

将常用的jquery插件封装成控件也是个不错的选择 下面是效果的简单颜色,由于博客系统的限制没法完整演示最终效果,请下载示例查看 Asp.netWeb APIC#Javascript 1.新建类库项目,创建数据源类 [Serializable] public class Select2Item { public bool Selected { get; set; } public string Text { get; set; } public string Value { get; set;

在WPF中,有没有一个只能输入数字的控件啊!

目前没有吧,你可以有两种选择: 1.重写控件,截获消息 2.为TextBox加事件,屏蔽按键 以下给出第二种方案: 为TextBox加两个事件:TextChanged和KeyDown事件,具体如下: KeyDown事件: private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { TextBox txt = sender as TextBox; //屏蔽非法按键 if ((e.Key >=