Czy mogę określić styl, który dotyczy wszystkich elementów? próbowałem
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Ale to nic nie dało
Odpowiedzi:
Utworzony przez Style
Ciebie jest tylko cel, Control
a nie elementy, które pochodzą z Control
. Jeśli nie ustawisz, jest x:Key
to niejawnie ustawione na TargetType
, więc w twoim przypadku x:Key="{x:Type Control}"
.
Nie ma żadnego bezpośredniego sposobu na podanie Style
, że cele wszystkie elementy, które wywodzą się z TargetType
z Style
. Masz inne możliwości.
Jeśli masz następujące Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Możesz Buttons
na przykład kierować reklamy do wszystkich
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
lub użyj stylu bezpośrednio na dowolnym elemencie, np Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Jak odpowiedział Fredrik Hedblad, możesz wpływać na wszystkie elementy odziedziczone po kontroli.
Ale nie możesz na przykład zastosować stylu do bloku tekstowego i przycisku w tym samym stylu.
aby to zrobić:
<Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="Control.Margin" Value="50"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
<Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
FrameworkElement
nie jest stosowany do wszystkich moich elementów sterujących - to odpowiedź na to pytanie!