几乎所有的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对代码段的不同部分进行必要的更改,包括更新属性名称,属性类型,包含类类型和默认值。
这里有一些重要的约定/规则:
为依赖项属性创建一个CLR属性。此属性用于对象的代码隐藏或其他使用者。它应该调用GetValue,SetValue因此消费者不必这样做。
正确命名依赖项属性。该DependencyProperty字段应为public static readonly。它的名称应与CLR属性名称相对应,并以“属性”结尾,例如Text和TextProperty。
不要向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