我要建一个Silverlight应用程序和我的一个警告,从最后一次是,如果你需要什么做的权利在Silverlight/WPF样,你会需要的模型对象为DependecyObject和使用DependencyProperty(ies)

我找到这个模型是相当烦琐,需要静态域和初始化中的一半,这类使用,因此,它是一个好主意使用良好的-旧的事件驱动的(观察员模式?) 在地。?

我的目标为最大限度地减少代码膨胀和锅炉板(我恨他们)和真想知道,如果任何人有经验,在Silverlight/WPF有任何技巧/技术对于保持使用的。而DependencyProperty到最低限度?

这是一个很好的主意吗?

有帮助吗?

解决方案

实际上,在Silverlight你不能继承Dependencyobject,所以你应(并)实施举,而不是。

执行举具有许多优点Dependencyobject(我将缩短这样做,以使它更容易)和使用DependencyProperties(DPs):

  • 这是更轻
  • 可以让你更自由在建模的对象
  • 可以化很容易
  • 你可以提高的事件,当你想要的,这可能是有用的,在某些情况下,例如当你想要捆多变化,只有一个UI操作,或者当需要提高的事件,即使该数据没有变化(以武力重新...)

另一方面,继承DOs在WPF具有以下优点:

  • 更易于实施特别是初学者。
  • 你回调机制,(几乎)免费的,让你得到通知时的财产价值的变化
  • 你会得到一个强制机制可以定义规则最大、最小和本价值的财产。

还有其他的考虑,但这些是主要的。

我认为,普遍的共识是,DPs是伟大的控制(和可以实现一个CustomControl与定义DPs甚至在Silverlight),但用于数据的对象,你应而实施的举.

禾田, Laurent

其他提示

这实际上取决于您所指的对象。如果该对象打算放在XAML树中,最好使用DependencyProperties(并因此继承DependencyObject - 所有UIElements都这样做)以允许DependencyProperties提供的所有好处(可动画,绑定,可选的自动子继承等)。我强烈建议您阅读关于DependencyProperties的MSDN概述已经。

如果对象是数据实体(即,您将其值绑定到XAML树中的某些内容),则无需从DependencyObject继承。如果对象上的属性是可读写的,则可能需要实现 INotifyPropertyChanged ,允许绑定在值更改时自动更新。

我同意Richard的观点,这取决于你的课程的目的,但是作为一个注释,你似乎可以直接在Silverlight 2.0 Release中继承DependencyObject,而不必继承UIElement或UserControl。至少,我在我的(SilverLight 2.0 RTW)应用程序中这样做。

System.Windows.DependencyObject on MSDN

  

对于大多数情况,直接从DependencyObject派生 不典型 。相反,您可以从一个特定控件,一个控件基类(ContentControl; Control; ItemsControl),FrameworkElement,或者仍然参与UI的非控件类(如Panel或Grid)派生。如果要定义要在其中激活依赖项属性的业务或数据存储对象,或者如果要创建将具有附加属性的服务支持类,则可能适合从DependencyObject派生。

HTH

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top