【问题标题】:please help with best approach for extension of WPF built-in class请帮助扩展 WPF 内置类的最佳方法
【发布时间】:2011-05-17 15:21:23
【问题描述】:

我想用一些额外的专有属性扩展 Shapes.Rectangle WPF 内置类。我可以通过 3 种不同的方式做到这一点:

  1. 声明我自己的包装类并将 WPF Rectangle 作为其成员之一。
  2. 使用我的专有属性声明我自己的结构/类并将其放入 Rectangle.Tag 字段中。
  3. 为我的每个专有属性声明 WPF 依赖属性并使用 Rectangle.SetValue() 和 Rectangle.GetValue() 方法。

从性能(速度、内存消耗)的角度来看,最好的方法是什么,让我的专有属性每时每刻都具有有意义的价值?

谢谢。

【问题讨论】:

  • 您能否举一个专有财产的例子以及它应该做什么?
  • 例如double originalWidth - 保存矩形的原始宽度

标签: wpf performance extensibility


【解决方案1】:

您可以创建扩展 Behavior 的 Behavior。

这是向现有元素添加行为的最佳和最简单的方法(并且对 Blend 友好)。 它现在是 WPF4 的一部分,您可以在添加对 System.Windows.Interactivity 的引用后使用它。

【讨论】:

  • 即使没有 WPF4 也可以创建附加行为,只是没那么容易:-)
  • 确实如此。 Blend3 SDK 来救援 :)
【解决方案2】:

您是要在任何地方都使用“某种”派生的 Rectangle,还是有时是 Rectangle 有时是你的?

如果您要每次都使用一些属性,我会说您应该创建一个包装类并尽可能保持它的轻量级。这将使您的代码尽可能干净。我不认为性能会是一个问题,除非你做成千上万的这些。如果你是,那么你可能有其他问题! :)

【讨论】:

    猜你喜欢
    • 2014-05-06
    • 1970-01-01
    • 2020-07-15
    • 2014-09-15
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2011-04-08
    • 2013-01-05
    相关资源
    最近更新 更多