Penso che il motivo principale siano gli oggetti sigillati. Se hai una gerarchia di stile:
Style A
/ \
Style A1 Style A2
questo potrebbe non essere uno scenario difficile. Si fa riferimento a StyleA
utilizzando una risorsa dinamica, quindi ogni volta che tale risorsa cambia, Style A1
e Style A2
devono modificare la loro proprietà BasedOn
. Tuttavia, una volta che uno stile viene utilizzato nella tua applicazione, diventa un oggetto sigillato. Style A
diventa immutabile.
Una soluzione è possibile utilizzare è:
Style A
deve cambiare.
- Creare un nuovo oggetto Stile che sarà la nuova risorsa
Style A
.
- Creare una nuova versione di
Style A1
e Style A2
. Dovresti scrivere una procedura di copia che faccia le copie di tutti gli Setters
, Resources
, ecc. Impostare BasedOn
sulla nuova versione di Style A
.
- Aggiorna la raccolta delle risorse in modo che i tre nuovi stili siano lì.
{DynamicResource StyleA1}
e {DynamicResource StyleA2}
dovrebbe ora prendere il fatto che tali cambiamenti risorse (dal punto 4) e aggiornare automaticamente tutti i riferimenti.
Si noti che questo è uno scenario molto semplice. Le gerarchie di stile reale possono essere più complesse, specialmente se sono distribuite su più file e provengono da dizionari uniti.
Spero di aver capito il tuo problema e di averlo aiutato.
fonte
2009-02-25 14:37:05
Che ne dici di questo scenario: un diverso team (Ux) crea gli stili di base ... uno sviluppatore desidera impostare un paio di proprietà oltre allo stile di base.Idealmente questo è uno scenario in cui DevStyle BasedOn "DynamicResource UxStyle" avrebbe aiutato. Se ciò non è possibile, quali sono le alternative per unire 2 stili prima di applicarlo a un controllo? – Gishu