WPF/SilverLight中的依赖项属性
我已经搜索了关于如何开始使用WPF/silverlight中使用的依赖项属性,但没有得到任何关于依赖属性的想法,任何人都可以告诉我关于它,从初学者的观点,以便我对此有所了解并将其用于我的项目WPF/SilverLight中的依赖项属性
在此先感谢。
可以任何一个给我简单的应用程序的链接或代码示例,它以简单的方式解释什么是依赖性属性是??? 我会非常感谢
我发现实现一个DependencyProperty通常包括四个部分:
- 的DependencyProperty的本身
- 房产以获取和设置
- 静态变为处理器
- 实例更改处理
可以使您可以将数据绑定到在用户控件实例化DataContext的东西依赖属性添加到用户控件。例如,您可以将属性添加到SoUserControl:
#region SampleProperty // Demo for SO 2424526
public static readonly DependencyProperty SamplePropertyProperty
= DependencyProperty.Register("SampleProperty", typeof(int), typeof(SoUserControl), new PropertyMetadata(OnSamplePropertyChanged));
/// <summary>
/// Demo for SO 2424526
/// Gets or sets dependency property.
/// </summary>
public int SampleProperty
{
get { return (int)GetValue(SamplePropertyProperty); }
set { SetValue(SamplePropertyProperty, value); }
}
/// <summary>
/// Handld changes to SamplePropertyProperty by calling a handler in the associated object.
/// </summary>
/// <param name="obj">object the property is associated with</param>
/// <param name="e">details of change</param>
static void OnSamplePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
(obj as SoUserControl).OnSamplePropertyChanged(e);
}
/// <summary>
/// Handle changes to the SamplePropertyProperty dependency property.
/// </summary>
/// <param name="e">details of change</param>
private void OnSamplePropertyChanged(DependencyPropertyChangedEventArgs e)
{
int SamplePropertyNewValue = (int)e.NewValue;
// do something with the internal logic of the control
}
#endregion
你应该读一本书,为初学者。
我已阅读WPF In Action With Visual Sutdio 2005来自Manning。
作为刚刚给我的负面标点符号的答案,依赖属性是名为WPF的更大规划的一部分,并且无法理解没有基础的依赖属性。
因此,我认为试图只了解什么是依赖属性是浪费时间,因为我担心最终会错误地使用它。
此外,MSDN网站有关于WPF和依赖属性的免费信息。
从我的依赖属性中使用。绑定时它们变得最重要。当绑定来显示一个常规属性时,初始绑定将会很好,但是,当属性发生更改时,UI不会始终更新,在这种情况下,您可以在您的类上实现INotifyPropertyChanged并引发NotifyPropertyChanged事件,但是会依赖于一个Dependency属性将为您更新而不实施INotifyProperty已更改。
触发器是另一个大的。如果你希望创建一个触发器来触发一个WPF动画,只要你的属性被设置为一个特定的值......那么你需要触发一个依赖属性。
DepenedencyProperties只能在派生自DependencyObject的类型上实现。 UIElement派生自Visual,派生自DependencyObject,因此.Net控件的大多数属性都是依赖项属性。当创建并注册我自己的DependencyProperties时,它通常位于我自定义的UserControls上,就像从UIElement继承的一样。
这对我来说非常令人沮丧,当我第一次尝试对我的普通班的一个创建一个依赖属性(你最好不要使用INotifyPropertyChanged的位置)
链接: http://msdn.microsoft.com/en-us/library/ms752914.aspx,http://www.wpftutorial.net/DependencyProperties.html
我认为您可以将它与关键字yield进行比较。它允许你生成一个懒惰列表或一个无限生成器。 每次需要从该列表中请求一个项目时,代码会继续执行该流程。
依赖属性对于值或内容是相同的想法。它会根据它所依赖的其他值来懒惰地计算所需价值。 它可以缓存该值,并且当底层部分是“脏”的时候,即某些东西发生了变化,它会传播 - 无效 - 所有依赖它的层次。
对象需要具备的DependencyObject的参与设施(也就是,所以发动机会了解它,把它介绍给链条。)
机制是通用的,不固定的,没有只需一个界面即可遵守。 但它比我说的要复杂一些。
我找到了一个很好的解释,接线我的理解,在下面的博客文章: http://blog.hackedbrain.com/2004/12/04/understanding-dependencyobject-and-dependencyproperty/
感谢您的时间和答案,这是真正需要的,一个想我要问你,是它是如何知道值已更改并传递给控件以显示已更改的值的。 再次感谢 – 2010-03-13 05:42:52