WPF附加属性的Set函数不调用的问题

简介: 原文:WPF附加属性的Set函数不调用的问题今天写程序的时候用到了附加属性,我是用VS内置的propa的代码段来实现的,代码如下:     class Attach    {        public static bool GetIsEnabl...
原文: WPF附加属性的Set函数不调用的问题

今天写程序的时候用到了附加属性,我是用VS内置的propa的代码段来实现的,代码如下:

    class Attach
    {
        public static bool GetIsEnabled(DependencyObject obj)
        {
            return (bool)obj.GetValue(IsEnabledProperty);
        }

        public static void SetIsEnabled(DependencyObject obj, bool value)
        {
            obj.SetValue(IsEnabledProperty, value);
        }

        public static readonly DependencyProperty IsEnabledProperty =
            DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(Attach), new PropertyMetadata(false));
    }

在XAML中使用的方式如下:

    <Grid local:Attach.IsEnabled="true" x:Name="grid" />

但是,调试的时候却发现一个问题:虽然附加属性的值的读取和写入都没有什么问题,但是按理说Attach.SetIsEnabled函数在启动的时候应该会调用一次在对,但却断点断不到。加入属性变更的回调通知时,回调函数也能正常的运行

我在网上找了一些示例代码,发现有有的断点能断到Set函数中,有的却不行。然后就将示例代码和我的代码一一比较,最后发现只要在注册附加属性的名称后面加一个"Property"就可以了。改成如下所示

    class Attach
    {
        public static bool GetIsEnabled(DependencyObject obj)
        {
            return (bool)obj.GetValue(IsEnabledProperty);
        }

        public static void SetIsEnabled(DependencyObject obj, bool value)
        {
            obj.SetValue(IsEnabledProperty, value);
        }

        public static readonly DependencyProperty IsEnabledProperty =
            DependencyProperty.RegisterAttached("IsEnabled
Property", typeof(bool), typeof(Attach), new PropertyMetadata(false));
    }

最开始我以为是VS提供的代码段有问题,导致我生成了错误的代码,便到MSDN上去查了一下,发现MSDN的示例代码页也没有"Property"后缀(地址:附加属性概述)。也就是说,自动生成的不带"Property"后缀才是正统形式。虽然两种形式的执行结果都是一样的,但是默认的这种第一次不掉用Set函数行为肯定是有问题的。

目录
相关文章
|
SQL HIVE
数仓学习-----named_struct和collect_set函数
数仓学习-----named_struct和collect_set函数
739 5
|
4月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
307 2
|
SQL 分布式计算 大数据
`collect_set`函数用于将一组数据收集到一个集合中
`collect_set`函数用于将一组数据收集到一个集合中
462 1
|
分布式计算 MaxCompute
MaxCompute中,collect_set函数是一个聚合函数
MaxCompute中,collect_set函数是一个聚合函数
490 1
|
Java Python
gc模块的set_threshold函数
gc模块的set_threshold函数
409 1
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
440 0
|
数据采集 Python
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
|
JavaScript
vue2中$set的原理_它对object属性做了啥?
vue2中$set的原理_它对object属性做了啥?
198 1
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)