Solo debe usar un DependencyProperty
cuando desee vincular su valor a algo a través de XAML, p. Ej.
<local:MyObject MyDependencyProperty="{Binding ...}" />
Actualización: como se ha mencionado por Ian continuación, las propiedades de dependencia también son necesarios si usted quiere ser capaz de animar su propiedad o se establece a través de un estilo
Si no es necesario trabajar de esta manera entonces es innecesario. p.ej. Si lo que desea es ser capaz de establecer el valor de una constante a través de XAML (como abajo) esto va a funcionar sin utilizar un DependencyProperty
<local:MyObject MyRegularProperty="Some Value" />
mismo modo, si desea enlazar a el valor de una propiedad en (por ejemplo) su vista del modelo:
<TextBlock Text="{Binding MyViewModelProperty}" />
entonces usted no necesita utilizar un DependencyProperty
. Siempre que implemente INotifyPropertyChanged
, el Text
se actualizará cuando cambie la propiedad.
Editar: al releer su pregunta, no estoy seguro de si es o no su situación se verá afectada por el hecho de que use o no un DependencyProperty
- si estoy leyendo correctamente, lo único que quiere hacer es causa que se actualicen varias propiedades en la interfaz de usuario cuando cualquiera de esas propiedades cambia, ¿verdad?
No creo que haya nada de malo en cómo está implementando las cosas en este momento (es decir, levantando un montón de eventos PropertyChanged
en cada setter), pero si no está interesado en eso, entonces podría intentar tener una única propiedad que expone propiedades secundarias relevantes para unirse al que están todos calculado:
class ColorWrapper
{
public Color Color { get; set; }
public byte Hue
{
get { return this.Color.Hue; } //or however this is calculated
}
Entonces tienen una propiedad Color
en su modelo de vista que genera el evento PropertyChanged
y se unen a los que a través de la Vista:
<TextBlock Text="{Binding Color.Hue}" />
Como dije, no diría que esto es particularmente una mejora de lo que ya has pensado.
No creo que sea una sobrecarga irrazonable en términos de código, y es ciertamente más liviano que agregar una DependencyProperty. –
si va a la ruta hsl-color. Lo haría, así que lo hago 't necesidad de calc tan a menudo. Por ejemplo, la tienda de H, S y L, en todo momento, y convertir sólo cuando necesitan sincronizarse. Esto mejorará enormemente su velocidad. –