首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在子类中仅更改DependencyProperty元数据的单个选项?

在子类中仅更改DependencyProperty元数据的单个选项,可以通过以下步骤实现:

  1. 首先,在子类中创建一个新的DependencyProperty,并将其继承自基类的DependencyProperty。
代码语言:csharp
复制
public class MyControl : BaseControl
{
    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(string), typeof(MyControl),
        new PropertyMetadata("DefaultValue", new PropertyChangedCallback(OnMyPropertyChanged)));
}
  1. 然后,在子类中重写基类的DependencyProperty元数据,并更改所需的选项。
代码语言:csharp
复制
public class MyControl : BaseControl
{
    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(string), typeof(MyControl),
        new PropertyMetadata("DefaultValue", new PropertyChangedCallback(OnMyPropertyChanged)));

    public new string MyProperty
    {
        get { return (string)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); }
    }
}
  1. 最后,在子类中重写基类的DependencyProperty元数据,并更改所需的选项。
代码语言:csharp
复制
public class MyControl : BaseControl
{
    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(string), typeof(MyControl),
        new FrameworkPropertyMetadata("DefaultValue", FrameworkPropertyMetadataOptions.Inherits,
            new PropertyChangedCallback(OnMyPropertyChanged)));

    public new string MyProperty
    {
        get { return (string)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); }
    }
}

这样,在子类中就可以仅更改基类DependencyProperty元数据的单个选项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一站式WPF--依赖属性(DependencyProperty)二

,属性的类型以及内部属性元数据。...如果我们在FrameworkPropertyMetadata中传入了CoerceValueCallback,WPF属性系统会回调我们传入的的delagate,进行数据的强制赋值。...另一类是剩下的,表示当选择了该选项后,依赖属性会具备什么功能,包括(默认双向绑定,属性继承等)。这里介绍一下属性继承(Inherits)。   继承是我们很熟悉的,子类可以继承父类的方法和属性等。...,Local具有最高的优先级,这里的Local指在XAML声明时显式指定的属性值或者在后台手动赋值,如 或者在后台代码中btn.Width...WPF建议实现多态的方式是在PropertyChangedCallback中调用虚函数来实现,如: private static void OnValueChanged(DependencyObject

62730

浅析依赖属性(DependencyProperty)

Register方法的第一个参数为string类型,用来指明作为依赖属性包装器的CLR属性;第二个参数指定依赖属性存储什么类型的值,第三个参数指明依赖属性的宿主是什么类型,第四个参数是依赖属性元数据,包含默认值...依赖属性存取值的机制 从修饰符可以看出依赖属性是一个静态的只读变量,要确保不同实例的依赖属性正确赋值,肯定不能把数据直接保存到这个静态变量中。这里其实也是依赖属性机制的核心。...DependencyProperty:依赖属性实例都是单例,其中DefaultMetadata存储了依赖属性的默认值,提供变化通知、限制、检验等回调以及子类override依赖属性的渠道。...依赖属性值的优先级 前边提到依赖属性支持多属性值,WPF中可以通过多种方法为一个依赖项属性赋值,如通过样式、模板、触发器、动画等为依赖项属性赋值的同时,控件本身的声明也为属性进行了赋值。...这里的继承Inherited是xaml树中的父元素,要区别于面向对象语言子类继承(derived,译为派生更合适)与父类 依赖属性元数据中的默认值 WPF对依赖属性的优先级支持分别使用了ModifiedValue

53420
  • 一站式WPF--依赖属性(DependencyProperty)一

    更进一步的发展   到目前为止,从属性到依赖属性的改造一切顺利。但随着实际的使用,又一个问题暴露出来了。使用继承,子类可以重写父类的字段,换句话说,这个默认值应该是可以子类化的。...那么怎么处理,子类重新注册一个DP,传入新的默认值?   当然,不会实现的这么丑陋。...DP内需要维护一个自描述的List,按照微软的命名规则,添加新的类型属性元数据(PropertyMetadata): 1: public class PropertyMetadata 2:...当然,实际DP中对Metadata的操作比较繁琐,当子类调用OverrideMetadata时会涉及到Merge操作,把新的Metadata与父类的合二为一。...总结   借助于依赖属性,WPF提供了强大的属性系统,可以支持数据绑定、样式、动画、附加属性等功能。

    81930

    【编辑】解决 Wpf TabControl 在所有选项卡上仅创建一个视图 的问题

    【编辑】解决 Wpf TabControl 在所有选项卡上仅创建一个视图 的问题 原标题:Wpf TabControl create only one view at all tabs(https://...所有选项卡仅使用一个 ListView 控件(ListView 的构造函数仅调用一次)。...问题在于所有选项卡都具有共同的视觉状态 – 例如,如果您更改了一个选项卡中任何项目的大小,则此更改将出现在所有选项卡上。...问题是你有一个 WPF 模板,无论你在它后面放什么数据,它都应该是相同的。因此,将创建模板的一个副本,每当 WPF 在 UI 树中遇到 ListViewModel 时,它都会使用该模板绘制它。...一种可能的替代方法可能是创建一个自定义 DependencyProperty,该属性绑定到您的项集合,并为集合中的每个项生成 TabItem 和 UserControl 对象。

    6910

    WPF依赖属性(wpf 依赖属性)

    大家好,又见面了,我是你们的朋友全栈君。 一、什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。...希望可在样式中设置属性。 2. 希望属性支持数据绑定。 3. 希望可使用动态资源引用设置属性。 4. 希望从元素树中的父元素自动继承属性值。 5. 希望属性可进行动画处理。 6....希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。...二、依赖属性的特点 1、属性变更通知 无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器...,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来实现。

    2.2K20

    PEP8-Python代码规范样式编写指南摘录

    在标准库中,非默认编码仅应用于测试目的,或者在注释或文档字符串需要提及包含非ASCII字符的作者姓名时;否则,使用 \ x, \ u,\ U 或 \ N 转义是在字符串文字中包含非ASCII数据的首选方法...(坚持的用户仍然可以通过调用 Foo._Foo__a 来获得访问权限。)通常,双引号下划线仅应用于避免名称与设计为子类的类中的属性发生冲突。...公共属性是您期望类中不相关的客户端使用的属性,并承诺避免向后不兼容的更改。非公开属性是指不打算由第三方使用的属性;您不保证非公开属性不会更改甚至被删除。...对于简单的公共数据属性,最好仅公开属性名称,而不使用复杂的访问器/更改器方法。请记住,Python为未来的增强提供了简便的方法,您应该发现需要一个简单的数据属性来实现功能增强行为。...注1:请注意,整齐的名称中仅使用简单的类名,因此,如果子类同时选择了相同的类名和属性名,则仍会发生名称冲突。 注2:名称修饰可以有某些用途(例如调试和 __getattr__),就是不太方便。

    1.6K10

    SqlAlchemy 2.0 中文文档(三十三)

    这些Engine实例可能引用不同的数据库,或者同一数据库中的不同模式/帐户,或者它们甚至可以仅通过会导致它们在使用时访问不同模式或表的选项进行区分。...helloworld.py - 演示如何加载一些数据,并缓存结果。 relationship_caching.py - 演示如何在关联端点上添加缓存选项,以便懒加载从缓存中加载。...继承映射配方 基本继承映射 单表、联表和具体表继承的工作示例,如映射类继承层次结构中所述。 文件列表: joined.py - 联接表(每个子类一个表)继承示例。...这些Engine实例可以引用不同的数据库,或者同一数据库中的不同模式/帐户,或者甚至可以仅通过选项来区分,当使用时会使它们访问不同的模式或表。...这些Engine 实例可以引用不同的数据库,或者同一数据库中的不同模式/帐户,或者它们甚至可以仅通过选项进行区分,这些选项将在使用时导致它们访问不同的模式或表。

    34510

    woocommerce shortcode短代码调用

    如果我想展示所有适合寒冷天气的装备,包括这些共享配件,我会将术语从 更改为 .NOT INwarmcold 场景 7 – 仅显示带有标签“连帽衫”的产品 [products tag="hoodie"]...设置为“0”以显示空类别 parent– 如果要显示所有子类别,请设置为特定类别 ID。或者,设置为“0”(如下例所示)以仅显示顶级类别。...ASCDESCorderbyASC 产品类别方案示例 仅显示顶级类别 想象一下,您只想在页面上显示顶级类别并排除子类别,那么可以使用以下短代码。...当您使用其他短代码(如 )并希望用户获得有关其操作的一些反馈时非常有用。...[products skus="sku-name"] 但是,如果我们使用父变量产品中的 SKU:商品数据>可变商品>库存> SKU,则会显示该商品数据。

    11.2K20

    使用新的存储文件跟踪功能解锁 S3 上的 HBase

    为了解决这个问题,在HBASE-26067中提出了对 HBase 内部文件写入的更广泛的重新设计,引入了一个单独的层来处理关于应该首先在何处创建文件以及如何在文件写入提交时进行的决定。...但是,由于这些是临时的、短期文件,因此在这种情况下所需的 HDFS 容量比将整个 HBase 数据存储在 HDFS 集群中的部署所需的容量小得多。 存储文件仅由区域服务器读取和修改。...存储文件跟踪转换器命令 可以使用两个新的 HBase shell 命令来更改表或列族的存储文件跟踪实现,并且可以用作转换最初未配置 FILE 跟踪器的导入表的替代方法: change_sft :允许更改单个表或列族的存储文件跟踪实现...这是rebuildStoreFileListFiles命令,可以一次为整个 HBase 目录树、单个表或表中的特定区域重建元文件。...如果传递了 -f/–fix 选项,该命令会有效地构建元文件,假设存储目录中的所有文件都有效。

    2K10

    原生TabControl控件实现拖拽排序功能

    本文将分享一种在原生控件上设置附加属性的方式实现拖拽排序功能。 该方法的使用非常简单,仅需增加一个附加属性就行。...另外,WPF的一大特点是支持数据驱动,即由数据模型来推动UI的呈现。...因此,可以通过通过拖拽事件处理拖拽的源位置以及目标位置,并获取到对应位置渲染的数据,然后操作数据集中数据的位置,从而实现数据和UI界面上的顺序更新。...Drop事件中确定了拖拽操作目标位置以及渲染的数据元素,然后移动元数据,通过数据顺序的变化更新界面的排序。从代码中可以看到列表控件的ItemsSource不能为空,否则拖拽无效。...缺点: 仅支持通过数据绑定动态渲染的列表控件,XAML硬编码或者后台代码循环添加列表元素创建的列表控件不适用该方法。 仅支持列表控件内的元素拖拽,不支持穿梭框拖拽效果。 不支持同时拖拽多个元素。

    44020

    深入浅出话属性

    在程序中,数据表现为各种各样的变量,算法则表现为各种各样的函数(操作符是函数的简记法)。...在这个方法中,一个以Set为前缀负责判断数据的有效性并写入数据。另一个以Get为前缀的负责把字段里的数据读出来。如下图: ?...IsSealed:控制PropertyMetaData的属性值是否可以更改,默认值为true; PropertyChangedCallBack:依赖属性的值被更改的时候该委托会被调用,此委托可以关联一个影响函数...(11)默认值,来源于依赖属性的元数据(metadata)。 理解了GetValue,SetValue也就不在神秘。...现在我们已经知道如何在XAML和C#代码中直接为附加属性赋值,不过别忘了,附加属性的本质是依赖属性---附加属性也可以使用Binding依赖在其它对象的数据上。

    92930

    EntityFramework 元数据 设计分析

    而且,我们准备逐渐把原有的较量级ORM框架给替换掉,并且使用EF中的元数据系统来完全充当 OEA 中的 ORM 元数据,以便使用这些映射信息来实现一些更多的操作。...Object Model 表示对象模型,该元数据说明了运行时对象的特征,如:CLR运行时类名、属性名等。    ...Storage Model 则表示数据库中的静态信息,如:表名、列名。    ...可以看出,这是一个动态属性注册的机制,动态语言运行时中的 DynamicObject、WPF及WWF 中的 DependencyProperty,都有类似的设计思想在其中。...这个设计非常类似于 Linq 系统中 Expression 的设计,它们都在最顶层的基类中枚举了所有的子类,以方便通过枚举的判断来识别运行时的类型。

    84780

    python异常报错详解

    args 给异常构造函数的元组元组。一些内置异常(如IOError)期望一定数量的参数,并为此元组的元素分配特殊含义,而其他异常通常仅使用单个字符串给出错误消息。...异常Exception 所有内置的非系统退出的异常都是从这个类派生出来的。所有用户定义的异常也应该从此类派生。 更改版本2.5:更改为继承BaseException。...当EnvironmentError使用3元组实例化异常时,前两个项目如上所述,而第三个项目在该filename属性上可用。但是,为了向后兼容,该 args属性仅包含前两个构造函数参数的2元组。...这个异常总是定义的,但是只有当Python配置了该--with-fpectl选项,或者WANT_SIGFPE_HANDLER在pyconfig.h文件中定义了符号时,才能引发此异常 。...异常UnboundLocalError 当引用函数或方法中的局部变量时引用,但没有值绑定到该变量。这是一个子类 NameError。

    4.7K20

    Flink TableSQL自定义Sources和Sinks全解析(附代码)

    因此,执行 CREATE TABLE 语句会导致目标目录中的元数据更新。 对于大多数catalog实现,外部系统中的物理数据不会针对此类操作进行修改。 特定于连接器的依赖项不必存在于类路径中。...WITH 子句中声明的选项既不被验证也不被解释。 动态表的元数据(通过 DDL 创建或由catalog提供)表示为 CatalogTable 的实例。...连接器选项(例如示例中的 ‘connector’ = ‘custom’)必须对应于有效的工厂标识符。...返回的更改日志模式指示计划程序在运行时可以预期的一组更改。 对于常规的批处理场景,源可以发出有限的仅插入行流。 对于常规流式处理方案,源可以发出无限制的仅插入行流。...与 ScanTableSource 相比,LookupTableSource 目前仅支持发出仅插入更改。 不支持进一步的能力。

    2.4K53

    将 Impala 数据迁移到 CDP

    您必须了解 Ranger 如何在 CDP 中执行可能与使用 Sentry 不同的策略。...创建复制策略向导的复制选项部分包含以下选项: 包括元数据和数据 仅包含元数据 迁移阶段 Sentry 和 Ranger 具有不同的权限模型。Sentry权限授予角色和用户。...功能分布在服务中,如下所示: 功能 CDH CDP 审计 访问请求 导航器控制台中的审计选项卡 Ranger 控制台中的审计页面 创建或更新元数据目录条目的服务操作 导航器控制台中的审计选项卡 Atlas...配置选项中的默认值更改 配置选项 范围 CDH 6.x 中的默认值 CDP 中的默认值 DEFAULT_FILE_FORMAT Query TEXT PARQUET hms_event_polling_interval_s...查找具有问题的参考表,表中如使用保留字,如create table语句 select中的CREATE 语句。 用反引号将表名括起来。

    1.4K30

    安卓 topic-UI-设置 settings

    Preference 对象是单个设置的构建基块。每个 Preference 均作为项目显示在列表中,并提供适当的 UI 供用户修改设置。...每个 Preference 子类均可以使用与类名(如 )匹配的 XML 元素来声明。 您必须将 XML 文件保存在 res/xml/ 目录中。...如果该值为 false,则仅当过去从未调用此方法时(或者默认值共享首选项文件中的 KEY_HAS_SET_DEFAULT_VALUES为 false 时),系统才会设置默认值。...使用首选项标头 在极少数情况下,您可能需要设计设置,使第一个屏幕仅显示子屏幕的列表(例如在系统“设置”应用中,如图 4 和图 5 所示)。...对于大多数应用,如果 Preference 子类保存除整型数以外的其他数据类型,则可复制下列实现并直接更改处理 value 的行. private static class SavedState extends

    3.1K10

    JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK16特性讲解】

    : 版本控制系统元数据的大小 可用工具 可用主机 转换后的存储库的初始原型显示版本控制元数据的大小显着减少。...元数据的减少保留了本地磁盘空间并减少了克隆时间,因为需要通过线路的位更少。Git 还具有 仅克隆部分历史记录的浅层克隆,从而为不需要整个历史记录的用户提供更少的元数据。...6.JEP 387:弹性元空间 概括 更及时地将未使用的 HotSpot 类元数据(即元空间)内存返还给操作系统,减少元空间占用空间,并简化元空间代码以降低维护成本。...作为对 JDK 的所有内部元素进行强封装的下一步,我们建议将 --illegal-access 选项的默认模式从 permit更改为 deny。...我们预计未来的 JEP 会 --illegal-access完全取消该选项。那时将无法通过单个命令行选项打开所有 JDK 8 包。

    1.7K50
    领券