WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
生活随笔
收集整理的這篇文章主要介紹了
WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
起初,想添加TreeView的樣式,在MouseOver時整行背景變色,但是我目前在XAML無法實(shí)現(xiàn).
搜索了一下,有個方法在后臺也要寫代碼.
參考:http://www.cnblogs.com/bray/archive/2010/05/01/1725457.html
用這個辦法可以解決樣式問題,但是不能方便的復(fù)用,就想到做成UserControl.
在UserControl里放入一個TreeView,需要 依賴屬性ItemsSource 和 路由事件SelectedItemChanged
參考:http://www.cnblogs.com/zhouyinhui/archive/2007/10/27/939920.html
?
以下是我的部分代碼
UCTreeView.xaml
?
View Code <TreeView??x:Name="treeview1"??SelectedItemChanged="treeview1_SelectedItemChanged"?Background="{x:Null}"?/>?
?
UCTreeView.xaml.cs
?
View Code #region?屬性依賴????????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("選擇項(xiàng)改變后發(fā)生")]
????????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
?
轉(zhuǎn)載于:https://www.cnblogs.com/star250/archive/2012/02/16/2353680.html
總結(jié)
以上是生活随笔為你收集整理的WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 5.5-yum安装配置LN
- 下一篇: 建立你的RoR学习环境(Windows)