Пожалуйста, помогите с лучшим подходом для расширения встроенного класса WPF - PullRequest
1 голос
/ 17 мая 2011

Я хочу расширить встроенный класс Shapes.Rectangle WPF с некоторыми дополнительными проприетарными свойствами. Я могу сделать это тремя разными способами:

  1. Объявите мой собственный класс-обертку и укажите в качестве члена WPF Rectangle.
  2. Объявите мою собственную структуру / класс со своими проприетарными свойствами и поместите его в поле Rectangle.Tag.
  3. Объявите свойство зависимостей WPF для каждого из моих собственных свойств и используйте методы Rectangle.SetValue () & Rectangle.GetValue ().

Каков наилучший подход с точки зрения производительности (скорость, потребление памяти), учитывая, что в каждый момент времени только часть моих собственных свойств будет иметь значимое значение?

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Вы можете создать поведение, расширяющее поведение.

Это лучший и самый простой способ (и дружественный к Blend) добавить поведение к существующим элементам. Теперь это часть WPF4, и вы можете использовать ее после добавления ссылки на System.Windows.Interactivity.

0 голосов
/ 17 мая 2011

Собираетесь ли вы везде использовать свой «род» производного прямоугольника, или это будет иногда прямоугольник, а иногда ваш?

Если вы собираетесь использовать некоторые свои свойства каждый раз, я бы сказал, что вы должны создать класс-оболочку и просто сохранить его как можно более легким. Это сделает ваш код максимально чистым. Я не думаю, что производительность будет проблемой, если вы не делаете тысячи из них. А если да, то у вас могут быть другие проблемы! :)

...