当前位置: 首页 > 编程笔记 >

wpf 只读依赖项属性

姜育
2023-03-14
本文向大家介绍wpf 只读依赖项属性,包括了wpf 只读依赖项属性的使用技巧和注意事项,需要的朋友参考一下

示例

何时使用

只读的依赖项属性与普通的依赖项属性相似,但其结构不允许从控件外部设置其值。如果您拥有仅供消费者参考的属性,则此方法很好用,例如IsMouseOver或IsKeyboardFocusWithin。

如何定义

与标准依赖项属性一样,只读依赖项属性必须在从派生的类上定义DependencyObject。

public class MyControl : Control
{
    private static readonly DependencyPropertyKey MyPropertyPropertyKey = 
        DependencyProperty.RegisterReadOnly("MyProperty", typeof(int), typeof(MyControl),
            new FrameworkPropertyMetadata(0));

    public static readonly DependencyProperty MyPropertyProperty = MyPropertyPropertyKey.DependencyProperty;

    public int MyProperty
    {
        get { return (int)GetValue(MyPropertyProperty); }
        private set { SetValue(MyPropertyPropertyKey, value); }
    }
}

适用于常规依赖项属性的约定也适用于此处,但有两个主要区别:

  1. 在DependencyProperty从源private DependencyPropertyKey。

  2. 在CLR的属性设置是protected或private不是public。

需要注意的是二传手传递MyPropertyPropertyKey,而不是MyPropertyProperty到SetValuehtml" target="_blank">方法。由于该属性是只读定义的,因此任何尝试SetValue对该属性使用的尝试都必须与具有receive的重载一起使用DependencyPropertyKey。否则,InvalidOperationException将抛出。

 类似资料:
  • 我很难理解WPF中的依赖属性,可能是因为我要找的用例非常具体,没有很好的文档化。 我有一个自定义控件,看起来像这样(请忽略所有可怕的代码,这是暂时的!): 我这样称呼它在我的主窗口内: 我只想在主窗口中的自定义控件调用中说: (其中fillPercent是另一个脚本中不需要担心的内容)。该控件将被展开,因此需要保持为自定义控件。我明白我可能需要依赖属性,但在尝试了许多不同的方法后,我无法弄清楚如何

  • 本文向大家介绍wpf 标准依赖项属性,包括了wpf 标准依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 几乎所有的WPF控件都大量使用依赖属性。依赖项属性允许使用许多仅标准CLR属性无法使用的WPF功能,包括但不限于对样式、动画、数据绑定、值继承和更改通知的支持。 TextBox.Text属性是需要标准依赖项属性的简单示例。在这里,如果Text是标准的CLR属性,则无法进行数据

  • 本文向大家介绍wpf 附加的依赖项属性,包括了wpf 附加的依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 附加属性是一种依赖项属性,可以将其应用于任何属性,DependencyObject以增强了解该属性存在的各种控件或服务的行为。 附加属性的一些用例包括: 有一个父元素遍历其子元素并以某种方式作用于子元素。例如,Grid控制使用Grid.Row,Grid.Column,Gr

  • 我与Intellij合作过一个java spring项目 当我构建并运行项目时,这些错误会出现在我身上: 无法解析符号“springframework” 错误:(32,48)java:-source 1.5中不支持菱形运算符(使用-source 7或更高版本启用菱形运算符) 错误:(33,55)java:方法引用在-source 1.5中不受支持(使用-source 8或更高版本来启用方法引用)

  • 问题内容: 我不知道何时属性应该是私有的,是否应该使用属性。 我最近读到,setter和getters不是pythonic,我应该使用属性装饰器。没关系。 但是,如果我有属性,那一定不能从类外部设置,而是可以读取的(只读属性)。这个属性应该是私有的吗?我所说的私有是指下划线吗?如果是,那么不使用getter怎么读?我现在知道的唯一方法是写 这样我就可以读取属性,但是我无法设置它,所以很好。 但是我

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存