Вы должны использовать DependencyProperty
только тогда, когда хотите иметь возможность связать его значение с чем-то через XAML, например,
<local:MyObject MyDependencyProperty="{Binding ...}" />
Обновление: как упомянуто Ианом ниже,Свойства зависимостей также требуются, если вы хотите иметь возможность анимировать свое свойство или задать его с помощью стиля
Если вам не нужно работать таким образом, тогда это не нужно.Например, если вы просто хотите установить постоянное значение через XAML (как показано ниже), это будет работать без использования DependencyProperty
<local:MyObject MyRegularProperty="Some Value" />
Аналогично, если вы хотите связать с значение свойства (например) вашей модели представления:
<TextBlock Text="{Binding MyViewModelProperty}" />
, тогда вам не нужно использовать DependencyProperty
.При условии, что вы внедрили INotifyPropertyChanged
, Text
все равно будет обновляться при изменении свойства.
Редактировать: при повторном чтении вашего вопроса, я не уверенНа ситуацию будет влиять то, используете ли вы DependencyProperty
- если я правильно его читаю, все, что вам нужно сделать, это заставить ряд свойств обновляться в пользовательском интерфейсе при изменении любого из этих свойств, верно?
Я не думаю, что есть что-то не так с тем, как вы реализуете вещи в данный момент (то есть вызываете много событий PropertyChanged
в каждом сеттере), но если вы не заинтересованы в этом, то выможет попытаться иметь единственное свойство, которое предоставляет соответствующие дочерние свойства для привязки к ним, которые все рассчитываются:
class ColorWrapper
{
public Color Color { get; set; }
public byte Hue
{
get { return this.Color.Hue; } //or however this is calculated
}
Затем в вашем ViewModel есть свойство Color
, которое вызывает событие PropertyChanged
и связывается с ним черезВзгляд:
<TextBlock Text="{Binding Color.Hue}" />
Как я уже сказал, я бы не сказал, что это, в частности, улучшение того, что у вас уже есть.