Bisakah saya menentukan gaya yang berlaku untuk semua elemen? Saya mencoba
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Tapi itu tidak melakukan apa-apa
Jawaban:
The Style
Anda buat hanya menargetkan Control
dan tidak unsur-unsur yang berasal dari Control
. Ketika Anda tidak menyetelnya, x:Key
itu secara implisit disetel ke TargetType
, jadi dalam kasus Andax:Key="{x:Type Control}"
.
Tidak ada cara langsung untuk menentukan Style
yang menargetkan semua elemen yang berasal dari TargetType
dari Style
. Anda memiliki beberapa opsi lain.
Jika Anda memiliki yang berikut ini Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Anda dapat menargetkan semua Buttons
misalnya
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
atau gunakan gaya secara langsung pada elemen apa pun, mis Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Seperti yang dijawab Fredrik Hedblad, Anda dapat mempengaruhi semua elemen yang diwarisi dari kontrol.
Tetapi Anda tidak dapat menerapkan gaya untuk textblock dan tombol dengan gaya yang sama misalnya.
untuk melakukannya:
<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
tidak diterapkan ke semua kontrol saya - ini menjawab pertanyaan itu!