什么是HTML类id';她在WPF吗?
我有一些堆叠面板,我希望有相同的宽度。然而,这不应该影响所有的StackPanel,我不想仅仅为此而子类化。我知道以下是可能的:什么是HTML类id';她在WPF吗?,html,wpf,xaml,styles,Html,Wpf,Xaml,Styles,我有一些堆叠面板,我希望有相同的宽度。然而,这不应该影响所有的StackPanel,我不想仅仅为此而子类化。我知道以下是可能的: <Style BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="TextBlock" x:Key="TitleText"> <Setter Property="FontSize" Value="26"/> </Style> ...
<Style BasedOn="{StaticResource {x:Type TextBlock}}"
TargetType="TextBlock"
x:Key="TitleText">
<Setter Property="FontSize" Value="26"/>
</Style>
...
<TextBlock Style="{StaticResource TitleText}">
Some Text
</TextBlock>
...
一些文本
但是有没有办法让TextBlock不知道它的样式(就像
HTML与应用于元素的CSS规则是分开的
我只想给所有相关的StackPanel相同的类id,然后申请
将样式设置为类id。不幸的是,这在WPF中是不可能的。最接近这一点的是您在示例中演示的内容 但是,如果要将样式应用于相同的根容器中的所有堆栈面板,可以将样式指定为根容器的资源,而不使用
x:Key
属性。例如:
<Grid x:Name="LayoutRoot">
<Grid x:Name="StackPanelsRoot">
<Grid.Resources>
<Style TargetType="StackPanel">
...
</Style>
</Grid.Resources>
<StackPanel x:Name="SP1" ... />
<StackPanel x:Name="SP2" ... />
...
</Grid>
<StackPanel x:Name="SP3" ... />
...
</Grid>
...
...
...
这里,样式将应用于
SP1
和SP2
,但不应用于SP3
TargetType将自动在该类型的所有对象上设置样式。如果您想让特定的文本块退出样式,可以这样做:
<TextBlock Style="{x:Null}"></TextBlock>
遗憾的是,没有,但您可以创建一个设置类,然后将样式隐式应用于所有文本块,但在附加的属性上使用触发器来决定应用哪些设置器。这样做的缺点是,它当然仍然不是很好,但样式的功能也有限,因为您不能在子样式中使用触发器。您唯一的其他选择是不设置TargetType,而是将样式分别应用于您希望应用的每个文本块。