Crea una proprietà di bind personalizzata per lo stile window.resources

Ho creato un paio di associazioni personalizzate per un controllo personalizzato, ma poiché questo caso è per uno stile window.resources per un pulsante, (piuttosto un modello di controllo), non so da dove iniziare per il codice. Dove creerei il viewmodel e cosa erediterò o riferimento?

XAML:

                                

I setter Hovercolor sono la chiave qui

Creare un viewmodel per personalizzare i colors dei pulsanti wpf è un approccio sbagliato. Lo schema colore dei pulsanti è qualcosa che appartiene strettamente a una vista. Anche molti pulsanti significano molte istanze del modello di visualizzazione, dal momento che ciascun pulsante potrebbe voler essere univoco: un numero eccessivo di codice per un’impostazione così semplice.

La class Button non ha abbastanza proprietà di dipendenza per impostare il colore che rappresenta HoverColorBackground / HoverColorBorder / HoverColorForeground. Le alternative consistono nel creare una class Button derivata (la strada da percorrere quando DP è di un tipo complesso e / o con una logica associata) o utilizzare proprietà associate. Ho scritto un consiglio che copre il secondo approccio .

versione breve

creare un DP allegato

 public static class Alt { #region Background public static readonly DependencyProperty BackgroundProperty = DependencyProperty.RegisterAttached("Background", typeof(Brush), typeof(Alt), new PropertyMetadata(null)); public static Brush GetBackground(DependencyObject obj) { return (Brush)obj.GetValue(Alt.BackgroundProperty); } public static void SetBackground(DependencyObject obj, Brush value) { obj.SetValue(Alt.BackgroundProperty, value); } #endregion } 

imposta un valore personalizzato per quella proprietà

  

assicurati che il modello sappia come usare quella proprietà

    

Funziona per qualsiasi controllo. Molti DP possono essere miscelati in qualsiasi combinazione.