Tôi có thể chỉ định một kiểu áp dụng cho tất cả các phần tử không? Tôi đã thử
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Nhưng nó không làm gì cả
Câu trả lời:
Các Style
bạn đã tạo được chỉ nhắm mục tiêu Control
và không yếu tố xuất phát từ Control
. Khi bạn không đặt, x:Key
nó sẽ được đặt hoàn toàn thành TargetType
, vì vậy trong trường hợp của bạn x:Key="{x:Type Control}"
.
Không có cách nào trực tiếp để xác định một Style
nhắm tất cả các yếu tố xuất phát từ TargetType
các Style
. Bạn có một số tùy chọn khác.
Nếu bạn có những điều sau đây Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Buttons
Ví dụ, bạn có thể nhắm mục tiêu tất cả
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
hoặc sử dụng kiểu trực tiếp trên bất kỳ phần tử nào, ví dụ: Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Như Fredrik Hedblad đã trả lời, bạn có thể hiệu ứng tất cả các yếu tố kế thừa từ quyền kiểm soát.
Nhưng bạn không thể áp dụng kiểu cho khối văn bản và nút có cùng kiểu chẳng hạn.
Để làm việc đó:
<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
không được áp dụng cho tất cả các điều khiển của tôi - điều này đã trả lời câu hỏi đó!