有没有办法在WPF中指定类似的内容:
CSS:
#someSpan input { color: #f1f1f1; }
or
span input { color: #f1f1f1; }
意思是,我希望容器中的所有TextBlock元素都遵循x样式,而不必将样式应用于每个文本块。
只是为了澄清,我需要在WPF中做这样的事情。
我知道样式的BasedOn属性..但这不是我在这里寻找的
寻找类似的东西
<Style x:Key="FileItem" TargetType="{x:Type #SomeContainer TextBlock}">
或者在SomeContainer中,添加将应用于其所有文本块的TextBlock样式
答案 0 :(得分:6)
你可以这样做,你只需要嵌套样式,例如
<Style TargetType="{x:Type Border}">
<Style.Resources>
<Style TargetType="{x:Type TextBox}">
<!-- ... -->
</Style>
<Style.Resources>
</Style>
这允许您在TextBoxes
中设置Borders
样式,但是元素只能应用一种样式,因此并行“规则”也不会起作用。
答案 1 :(得分:4)
关于问题的最后一部分,如果要将样式应用于特定元素中的所有TextBlock
,只需将Style
放在该元素资源中:
<TextBlock /> <!-- unaffected -->
<Grid>
<Grid.Resources>
<Style TargetType="TextBlock">
<!-- ... -->
</Style>
</Grid.Resources>
<TextBlock /> <!-- will be styled -->
</Grid>
如果您将样式存储在单独的ResourceDictionary
中,则可以通过合并资源字典将其全部“导入”给特定元素:
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/MyOtherStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
<TextBlock /> <!-- will be styled -->
</Grid>