WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
起初,想添加TreeView的样式,在MouseOver时整行背景变色,但是我目前在XAML无法实现.
搜索了一下,有个方法在后台也要写代码.
参考:http://www.cnblogs.com/bray/archive/2010/05/01/1725457.html
用这个办法可以解决样式问题,但是不能方便的复用,就想到做成UserControl.
在UserControl里放入一个TreeView,需要 依赖属性ItemsSource 和 路由事件SelectedItemChanged
参考:http://www.cnblogs.com/zhouyinhui/archive/2007/10/27/939920.html
以下是我的部分代码
UCTreeView.xaml
UCTreeView.xaml.cs
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable),
typeof(UCTreeView),
new PropertyMetadata(null,new PropertyChangedCallback(OnItemsSourceChanged)));
public IEnumerable ItemsSource
{
get { return (IEnumerable)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
static void OnItemsSourceChanged(object sender, DependencyPropertyChangedEventArgs args)
{
if (sender != null && sender is UCTreeView)
{
UCTreeView source = (UCTreeView)sender;
source.treeview1.ItemsSource = (IEnumerable)args.NewValue;
}
}
#endregion
#region 事件路由
public static readonly RoutedEvent SelectedItemChangedEvent =
EventManager.RegisterRoutedEvent("SelectedItemChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<object>), typeof(UCTreeView));
[Description("选择项改变后发生")]
public event RoutedPropertyChangedEventHandler<object> SelectedItemChanged
{
add
{
this.AddHandler(SelectedItemChangedEvent, value);
}
remove
{
this.RemoveHandler(SelectedItemChangedEvent, value);
}
}
public void OnSelectedItemChanged(object oldValue, object newValue)
{
RoutedPropertyChangedEventArgs<object> arg =
new RoutedPropertyChangedEventArgs<object>(oldValue, newValue, SelectedItemChangedEvent);
this.RaiseEvent(arg);
}
private void treeview1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
OnSelectedItemChanged((object)e.OldValue, (object)e.NewValue);
}
#endregion
转载于:https://www.cnblogs.com/star250/archive/2012/02/16/2353680.html
WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent相关推荐
- WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...
- SilverlightWPF依赖属性DependencyProperty讲解
作者:周永恒 出处:http://www.cnblogs.com/Zhouyongh 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- WPF usercontrol 自定义依赖属性
1.依赖属性不同意一般属性,一般属性主要定义在对象中,而依赖属性是存在一个特殊的依赖属性表中. 2.当我们触发改变值时,需要通过SetValue这种方式进行触发. UserControl1.xaml: ...
- WPF,Silverlight与XAML读书笔记第八 - WPF新概念之三路由事件
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 路由事件是专门设计用于在元素树中使用的事件. ...
- WPF基础到企业应用系列8——依赖属性之“风云再起”
一. 摘要 首先圣殿骑士很高兴"WPF 基础到企业应用系列" 能得到大家的关注.支持和认可.看到很多朋友留言希望加快速度的问题,我会尽力的,对你们的热情关注也表示由衷的感谢.这段时 ...
- 了解 WPF 中的路由事件和命令
目录 路由事件概述 WPF 元素树 事件路由 路由事件和组合 附加事件 路由命令概述 操作中的路由命令 命令路由 定义命令 命令插入 路由命令的局限 避免命令出错 超越路由命令 路由处理程序示例 要想 ...
- WPF快速入门系列(2)——深入解析依赖属性
一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己开始更新WPF系列.尽管最近看到一篇WPF技术是否老矣的文章,但是还是不能阻止我系统学习WPF.今天继续分享WPF中一个最 ...
- WPF的依赖属性和附加属性(用法解释较全)
转:https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html 一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己 ...
- 初步了解WPF依赖属性
一 依赖属性 在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性.但必须明确,在WPF中我们大多数都在使用依赖属性,而不是使用属性.依赖属性重要性在 ...
最新文章
- POJ 3320 Jessica's Reading Problem (尺取)
- Docker Review - Docker 概念 入门篇
- ngrok服务器搭建
- eks volumn s3_威客电竞 深渊联赛S3欧洲区总决赛,Secret成就八连冠
- 使用 C# 编程对RTF文档的支持
- 暴力——猜数字(hdu1172)
- java中计算平均成绩_Java计算平均成绩
- 上海计算机应用基础自考上机,上海2012年自考《计算机应用基础》上机考核大纲...
- android4.0 禁止横竖屏切换使用 android:configChanges=orientation|keyboardHidden无效
- qcc烧录工具QCC30xx/QCC51xx全系列支持烧录工具qcc3020/3040/5124/5126qcc烧录软件
- Python笔记 之 矩阵元素选取
- 向已知EXCEL模板写入数据并导出
- win7计算器左移、右移操作
- redis获取哈希类型的值,hget、hmget、hgetall
- 基于单片机的超市储物柜设计_智能储物柜开题报告.docx
- 基于51单片机的电子时钟(数码管显示)
- survival | 生存分析(3):生存曲线(下)
- 睡眠健康与肠道健康之间的双向联系
- [EI检索]2022智能制造、先进传感与大数据国际会议诚邀您关注
- 计算机没有管理无线网络,笔记本win7系统下没有无线网络选项的解决方法