谁能用简洁易懂的语言介绍下依赖属性(dependcy property)

gnimgnot 2012-05-14 04:44:04
是做什么的,什么场合下用,怎么自定义?和普通属性的区别?

MSDN的文章看着头晕。
...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ownorg 2013-08-15
  • 打赏
  • 举报
回复
引用 7 楼 ohkuy 的回复:
[Quote=引用楼主 的回复:] 是做什么的,什么场合下用,怎么自定义?和普通属性的区别? MSDN的文章看着头晕。 [/Quote] 先给个例子吧:

public class Test : DependencyObject
    {
 public double DownValue
        {
            get { return (double)GetValue(DownValueProperty); }
            set { SetValue(DownValueProperty, value); }
        }

        // Using a DependencyProperty as the backing store for DownValue.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DownValueProperty =
            DependencyProperty.Register("DownValue", typeof(double), typeof(Test), new UIPropertyMetadata(0));
    }
用法与普通属性一样: Test t=new Test(); 绑定:

<ProgressBar x:Name="progressbar1" HorizontalAlignment="Center"                                                    Value="{Binding DownValue}"/>
做什么: 主要用于数据绑定,与普通属性一样 什么场合下用: 当UI界面需要实时更新时用, 比如下载进度条的进度值 如果是普通属性绑定,属性值是改变的,但UI进度条不会更新, 如果用依赖属性绑定,则实时更新 和普通属性的区别: 太多了,比如WPF可支持回调,跨线程更新、双通等, 但绑定用法与普通属性一样
看了那么多文章,就这个是精品!
doubleu2005 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用楼主 的回复:
是做什么的,什么场合下用,怎么自定义?和普通属性的区别?

MSDN的文章看着头晕。

先给个例子吧:
C# code

public class Test : DependencyObject
{
public double DownValue
{
get { return (double)GetValue(……
[/Quote]

+1
Conmajia 2012-05-14
  • 打赏
  • 举报
回复
WPF
离我真遥远
ohkuy 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
是做什么的,什么场合下用,怎么自定义?和普通属性的区别?

MSDN的文章看着头晕。
[/Quote]
先给个例子吧:

public class Test : DependencyObject
{
public double DownValue
{
get { return (double)GetValue(DownValueProperty); }
set { SetValue(DownValueProperty, value); }
}

// Using a DependencyProperty as the backing store for DownValue. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DownValueProperty =
DependencyProperty.Register("DownValue", typeof(double), typeof(Test), new UIPropertyMetadata(0));
}

用法与普通属性一样:
Test t=new Test();
绑定:

<ProgressBar x:Name="progressbar1" HorizontalAlignment="Center" Value="{Binding DownValue}"/>

做什么:
主要用于数据绑定,与普通属性一样
什么场合下用:
当UI界面需要实时更新时用,
比如下载进度条的进度值
如果是普通属性绑定,属性值是改变的,但UI进度条不会更新,
如果用依赖属性绑定,则实时更新

和普通属性的区别:
太多了,比如WPF可支持回调,跨线程更新、双通等,
但绑定用法与普通属性一样
gnimgnot 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
依赖属性的本质就是一个共享属性 也就是静态属性.
定义公开属性

public int minNimber
{
set { SetValue(minNumberProperty, value); }
get { return (int)GetValue(minNumberProperty); }
}
public int maxNimber
{
……
[/Quote]
意思是多个控件共用一个属性?那怎么确定哪个控件能用哪个属性?
cheng2005 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

依赖项属性是、其实就是设置了一个值之后与其相关的值进行对比,得出新的值。
例如你设置了Width=100 他的MaxWidth=90 设置完后就要与原先会有影响的值进行比较,这就是依赖项属性,至于怎么做就有很多例子了
[/Quote]
送你俩字,放屁
threenewbee 2012-05-14
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Zhouyongh/archive/2009/09/10/1564099.html
http://msdn.microsoft.com/zh-cn/library/ms752914.aspx
wxmayifei 2012-05-14
  • 打赏
  • 举报
回复
依赖项属性是、其实就是设置了一个值之后与其相关的值进行对比,得出新的值。
例如你设置了Width=100 他的MaxWidth=90 设置完后就要与原先会有影响的值进行比较,这就是依赖项属性,至于怎么做就有很多例子了
hxlaccp168 2012-05-14
  • 打赏
  • 举报
回复
依赖属性的本质就是一个共享属性 也就是静态属性.
定义公开属性

public int minNimber
{
set { SetValue(minNumberProperty, value); }
get { return (int)GetValue(minNumberProperty); }
}
public int maxNimber
{
set { SetValue(maxNumberProperty, value); }
get { return (int)GetValue(maxNumberProperty); }
}

get/setValue方法就是获取或者设置相关依赖属性的值
cheng2005 2012-05-14
  • 打赏
  • 举报
回复
想在WPF中当作绑定目标的属性就必须是依赖属性,够简单吗?你想要的都告诉你了。

你的问题就好像问,人生的意义是什么,谁能简洁易懂的介绍一下。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧