码迷,mamicode.com
首页 > Windows程序 > 详细

WPF 依赖附加属性

时间:2019-08-03 14:32:40      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:eth   name   com   mod   img   eof   new   window   only   

附加属性的本质是一个依赖属性,与普通的依赖属性区别:

1:注册方法名不一样,如 DependencyProperty.RegisterAttached

2:没有普通的属性包装器,而是通过get和set属性来实现属性包装

3:没有普通的.NET属性

public static readonly DependencyProperty KeepAliveProperty =  DependencyProperty.Register(
"KeepAlive",
typeof(bool),
typeof(Window),
new PropertyMetadata(KeepAliveChanged));
        /// <summary>
        /// 获取一个值,该值指示是否在现代化框架实例中保持指定对象的活动状态/// </summary>
        /// <param name="o">The target dependency object.</param>
        /// <returns>Whether to keep the object alive. Null to leave the decision to the ModernFrame.</returns>
        public static bool? GetKeepAlive(DependencyObject o)
        {
            if (o == null) {
                throw new ArgumentNullException("o");
            }
            return (bool?)o.GetValue(KeepAliveProperty);
        }

        /// <summary>
        /// 设置一个值,该值指示是否在现代化框架实例中保持指定对象的活动状态/// </summary>
        /// <param name="o">The target dependency object.</param>
        /// <param name="value">Whether to keep the object alive. Null to leave the decision to the ModernFrame.</param>
        public static void SetKeepAlive(DependencyObject o, bool? value)
        {
            if (o == null) {
                throw new ArgumentNullException("o");
            }
            o.SetValue(KeepAliveProperty, value);
        }
        private static void KeepAliveChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var window = d as Window;
            if (window != null)
            {
                window.DialogResult = e.NewValue as bool?;
            }
        }

用法:

 

技术图片

 

WPF 依赖附加属性

标签:eth   name   com   mod   img   eof   new   window   only   

原文地址:https://www.cnblogs.com/wgx0428/p/11294603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!