Utilizzare solo un DependencyProperty
quando si desidera poter associare il valore al valore a qualcosa tramite XAML, ad es.
<local:MyObject MyDependencyProperty="{Binding ...}" />
Aggiornamento: come detto da Ian di seguito, le proprietà di dipendenza sono necessari anche se si vuole essere in grado di animare la vostra proprietà o impostarlo attraverso uno stile
Se non c'è bisogno di lavorare in questo modo quindi non è necessario. per esempio. Se si desidera solo essere in grado di impostare il valore a una costante attraverso XAML (come sotto) questo lavoro senza utilizzare una DependencyProperty
<local:MyObject MyRegularProperty="Some Value" />
Allo stesso modo, se si desidera associare - il valore di una proprietà su (per esempio) il vostro vista del modello:
<TextBlock Text="{Binding MyViewModelProperty}" />
allora non c'è bisogno di usare un DependencyProperty
. Se si implementa INotifyPropertyChanged
, lo Text
verrà comunque aggiornato quando la proprietà cambia.
Edit: rileggendo la tua domanda, non sono sicuro se la vostra situazione sarà influenzato da se o non si utilizza un DependencyProperty
- se sto leggendo correttamente, tutto quello che vuoi fare è causare un numero di proprietà da aggiornare sull'interfaccia utente quando cambia una di queste proprietà, giusto?
Non penso che ci sia qualcosa di sbagliato nel modo in cui stai implementando le cose al momento (cioè sollevando un sacco di eventi PropertyChanged
in ogni setter), ma se non ti appassioni allora potresti provare ad avere un singola proprietà che espone importanti proprietà secondarie di legarsi a che sono tutti calcolati:
class ColorWrapper
{
public Color Color { get; set; }
public byte Hue
{
get { return this.Color.Hue; } //or however this is calculated
}
Poi hanno una proprietà Color
sul tuo ViewModel che genera l'evento PropertyChanged
e legarsi a che attraverso la vista:
<TextBlock Text="{Binding Color.Hue}" />
Come ho detto, non direi che questo è un miglioramento in particolare di quello che hai già.
Non penso che sia un sovraccarico irragionevole in termini di codice, ed è sicuramente più leggero rispetto all'aggiunta di una proprietà Dependency. –
se si sta utilizzando la rotta hsl-color. È necessario calcolare così spesso, ad esempio, salvare sempre H, S e L e convertirli solo quando è necessario sincronizzarli, il che aumenterà enormemente la velocità. –