Wyobraź sobie aplikację wpf, w której mogę dynamicznie zmieniać motyw. Robię to, zamieniając ResourceDictionaries na poziomie zasobów aplikacji. Kompozycje tematyczne mają niejawne style zdefiniowane dla TextBox i tym podobne.Ustawianie lokalnego domyślnego stylu różniącego się od stylu kompozycji/alternatywy do BasedOn DynamicResource
Teraz mam część w mojej aplikacji, w której pola tekstowe powinny mieć ten specyficzny styl "NonDefaultTextBoxStyle", a nie szeroki, domyślny program.
chciałbym to zrobić (przy użyciu DynamicResource ponieważ motyw można zmienić w trakcie wykonywania):
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBox" BasedOn="{DynamicResource NonDefaultTextBoxStyle}"/>
</StackPanel.Resources>
<TextBox .../>
<TextBox .../>
<TextBox .../>
</StackPanel>
zamiast to zrobić:
<StackPanel>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
</StackPanel>
teraz, aby uprościć to ja wpadł na pomysł ustawienia dziedziczonej właściwości na StackPanel, która ustawiłaby określony styl na każdym kolejnym polu tekstowym.
Czy to dobry pomysł? Czy są prostsze sposoby? Czy czegoś brakuje?
to dość dużo sprowadza się do: Co jest alternatywą dla basedon = "{...} DynamicResource w stylu
mogę jedynie zachęcić do zapoznania się pytanie! Nie rozwiązujesz mojego problemu! –
@ MarkusHütter Ah Widzę teraz twoje pytanie. Hmm dobrze kontynuując moją odpowiedź, powinieneś być w stanie zmienić Attached Dependencies Properties w moim rozwiązaniu na 'FrameworkPropertyMetadataOptions.Inherits' (używając tego http://msdn.microsoft.com/en-us/library/ms557296.aspx zamiast' UIPropertyMetadata'), a następnie sprawdź funkcję typu 'StylesChanged'. Załączona właściwość będzie musiała zostać zapisana tylko raz na elemencie StackPanel. – NtscCobalt
więc masz na myśli to, co już zasugerowałem w pytaniu ... –