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

wpf 标准依赖项属性

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

示例

何时使用

几乎所有的WPF控件都大量使用依赖属性。依赖项属性允许使用许多仅标准CLR属性无法使用的WPF功能,包括但不限于对样式、动画、数据绑定、值继承和更改通知的支持。

TextBox.Text属性是需要标准依赖项属性的简单示例。在这里,如果Text是标准的CLR属性,则无法进行数据绑定。

<TextBox Text="{Binding FirstName}" />

如何定义

依赖性属性可以仅在从派生的类定义DependencyObject,例如FrameworkElement,Control等

创建标准依赖项属性而无需记住语法的最快方法之一是通过键入propdp然后按来使用“ propdp”代码段Tab。将插入一个代码片段,然后可以对其进行修改以满足您的需求:

public class MyControl : Control
{
    public int MyProperty
    {
        get { return (int)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); }
    }

    // 使用DependencyProperty作为MyProperty的后备存储。
    // 这样可以启用动画,样式,绑定等。
    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(int), typeof(MyControl),
            new PropertyMetadata(0));
}

您应该Tab对代码段的不同部分进行必要的更改,包括更新属性名称,属性类型,包含类类型和默认值。

重要约定

这里有一些重要的约定/规则:

  1. 为依赖项属性创建一个CLR属性。此属性用于对象的代码隐藏或其他使用者。它应该调用GetValue,SetValue因此消费者不必这样做。

  2. 正确命名依赖项属性。该DependencyProperty字段应为public static readonly。它的名称应与CLR属性名称相对应,并以“属性”结尾,例如Text和TextProperty。

  3. 不要向CLR属性的设置器添加其他逻辑。依赖项属性系统(特别是XAML)不使用CLR属性。如果要在属性值更改时执行操作,则必须通过PropertyMetadata以下方式提供回调:

    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(int), typeof(MyControl),
            new PropertyMetadata(0, MyPropertyChangedHandler));
    private static void MyPropertyChangedHandler(DependencyObject sender, DependencyPropertyChangedEventArgs args)
    {
        // 根据需要在此处使用args.OldValue和args.NewValue。
        // 发送者是其属性已更改的对象。
        // 需要一些拆箱。
    }

绑定方式

为了消除Mode=TwoWay在绑定中指定的需求(类似于的行为TextBox.Text),请更新要使用的代码,以FrameworkPropertyMetadata代替PropertyMetadata并指定适当的标志:

public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register("MyProperty", typeof(int), typeof(MyControl), 
        new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));

           

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

  • 本文向大家介绍wpf 只读依赖项属性,包括了wpf 只读依赖项属性的使用技巧和注意事项,需要的朋友参考一下 示例 何时使用 只读的依赖项属性与普通的依赖项属性相似,但其结构不允许从控件外部设置其值。如果您拥有仅供消费者参考的属性,则此方法很好用,例如IsMouseOver或IsKeyboardFocusWithin。 如何定义 与标准依赖项属性一样,只读依赖项属性必须在从派生的类上定义Depend

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

  • 移除标准库依赖 禁用标准库 项目默认是链接 Rust 标准库 std 的,它依赖于操作系统,因此我们需要显式通过 #![no_std] 将其禁用: os/src/main.rs //! # 全局属性 //! - `#![no_std]` //! 禁用标准库 #![no_std] fn main() { println!("Hello, rCore-Tutorial!"); }

  • 当我对pom文件的属性部分中定义的键的依赖项使用version时,依赖项不会被下载,但是当我对依赖项的version进行硬编码时,依赖项会被下载。 repo.maven.apache.org/maven2/info/cukes/cucumber-java/{cucumber-version}/cucumber-java-{cucumber-version}.pom 为什么不是用在propertie

  • Project 对象提供了一些标准的属性,您可以在构建脚本中很方便的使用他们. 下面列出了常用的属性: Name Type Default Value project Project Project 实例对象 name String 项目目录的名称 path String 项目的绝对路径 description String 项目描述 projectDir File 包含构建脚本的目录 build