我有以下情况(简化):
在我的ResourceDictionary中,我为Label定义了几个命名样式:
<Style
x:Key="sNormalLabel"
TargetType="Label" >
<Setter Property="FontFamily" Value="Verdana" />
<Setter Property="FontSize" Value="12" />
<!-- ... -->
</Style>
<Style
x:Key="sHeaderLabel"
TargetType="Label"
BasedOn="{StaticResource sNormalLabel}" >
<Setter Property="FontSize" Value="16" />
</Style>
Run Code Online (Sandbox Code Playgroud)
然后我通过使用BasedOn引用它,使其中一个默认为没有键的样式:
<!-- Apply Normal label automatically -->
<Style
TargetType="Label"
BasedOn="{StaticResource sNormalLabel}" />
Run Code Online (Sandbox Code Playgroud)
我认为自动应用标准样式标签非常方便,我知道如果将来我们的设计团队决定使用Wingdings或其他东西,那么整个应用程序很容易改变(事实上所有应用程序都是如此)共享相同的ResourceDictionary).
创建UserControl我想在顶部添加一个带有sHeaderLabel样式的Label,因此我申请
Style={StaticResource sHeaderLabel}
Run Code Online (Sandbox Code Playgroud)
在USerControl XAML中,设计师看起来都很好.
但是,当我将UserControl添加到MainWindow时,标题标签返回到sNormalLabel样式(自动应用的样式).
我假设它与应用样式的顺序有关,UserControl在创建后由MainWindow设置样式,sHeaderLabel样式被自动样式覆盖.
这给我留下了几个悬而未决的问题:
如果有人对类似的东西有任何实际经验,我会很感激.
编辑:有趣的是,我刚刚意识到我只看到Font*属性的这些问题.在Normal/Header样式中以不同方式设置Foreground/Background画笔会使用CORRECT颜色将UserControl中的Label(使用sHeaderLabel设置样式)保留.但是,在sHeaderLabel中将FontWeight设置为粗体无效.
我也以相同的方式设置TextBox样式,使用HeaderTExtBox样式,我也没有看到问题,只有标签.
干杯!
./Fredrik
我正在使用jqGrid进行项目并检查它使用的样式我找到了这样的选择器:
.ui-jqgrid tr.ui-row-ltr td {
...
}
Run Code Online (Sandbox Code Playgroud)
.ui-jqgrid
当然是一堂课.
td.ui-row-ltr
是ui-row-ltr
应用于表行元素的类的选择器.
所以我的问题:
.class1, .class2
意味着"应用于class1和class2",但空间分离是什么意思?td
在到底意味着什么?td.class
我理解但是class td
?