Immaginare un'applicazione wpf in cui sia possibile modificare dinamicamente il tema. Lo faccio sostituendo ResourceDictionaries al livello di risorsa Application. I resourcedictionaries a tema hanno stili impliciti definiti per TextBox e simili.Impostazione di uno stile implicito locale diverso da stile tema/alternativo a Basato su DynamicResource
Ora ho una parte nella mia applicazione in cui le caselle di testo dovrebbero avere questo stile specifico "NonDefaultTextBoxStyle" e non quello implicito dell'applicazione.
mi piacerebbe fare questo (utilizzando DynamicResource perché il tema può essere modificato durante il runtime):
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBox" BasedOn="{DynamicResource NonDefaultTextBoxStyle}"/>
</StackPanel.Resources>
<TextBox .../>
<TextBox .../>
<TextBox .../>
</StackPanel>
invece di dover fare questo:
<StackPanel>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
</StackPanel>
Ora per semplificare questo, aveva questa idea di impostare una proprietà associata ereditabile sullo StackPanel che avrebbe impostato uno stile specifico su ogni casella di testo discendente.
Questa è una buona idea? Ci sono modi più semplici? Mi sto perdendo qualcosa?
questo si riduce praticamente fino a: Qual è un'alternativa a BasedOn = "{DynamicResource ...} in uno stile
posso solo incoraggiarvi a leggere la domanda! Non stai risolvendo il mio problema! –
@ MarkusHütter Ah Vedo la tua domanda ora. Continuando bene con la mia risposta, dovresti essere in grado di modificare le Proprietà delle dipendenze associate nella mia soluzione a 'FrameworkPropertyMetadataOptions.Inherits' (utilizzando questo http://msdn.microsoft.com/en-us/library/ms557296.aspx invece di' UIPropertyMetadata') e quindi controllare la funzione di tipo 'StylesChanged'. La proprietà allegata dovrà quindi essere scritta una sola volta sull'elemento StackPanel. – NtscCobalt
quindi intendi quello che ho già suggerito nella domanda ... –