风格选择器如何在阿瓦洛尼亚工作?



选择器看起来与CSS非常相似。阿瓦洛尼亚有哪些选择器?例如,这个选择器的含义是什么:

<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>

是的,选择器与CSS非常相似。目前(在 0.5.0 alpha 时)以下选择器可用。我通过示例解释这些选择器,否则很难理解:

  • Button:这将按类型选择控件,因此如果您编写选择器Button则它将匹配Avalonia.Controls.Button类。它派生类型 [1] 不匹配
  • :is(Button):这与Class非常相似,只是它也匹配派生类型
  • Button TextBlock:当两个选择器用空格分隔时,选择器将匹配后代,因此在这种情况下,选择器将匹配作为Button逻辑后代的任何TextBlock
  • Button > TextBlock:当两个选择器被一个>分隔时,则选择器将匹配子项,因此在这种情况下,选择器将匹配任何直接逻辑TextBlockButton
  • Button#MyButton这将匹配任何ButtonMyButtonName
  • Button.MyClass,这会将任何Button与字符串MyClass匹配,作为其Classes中的条目
  • Button:disabled这将匹配任何Button:disabled伪类
  • Button[IsDefault=true]:这将匹配任何具有IsDefault属性为trueButton
  • Button /template/ ContentPresenter这与Button的控件模板中的ContentPresenter匹配 [2]

[1]:请注意,对象的类型实际上是通过查看其IStyleable.StyleKey属性来确定的,因此,如果您确实希望从Button继承的控件被样式设置为Button,那么您可以在类上实现IStyleable.StyleKey以返回typeof(Button)

[2]:这类似于 CSS 中的/deep/运算符(现已弃用);CSS shadow DOM 是一个与控件模板非常相似的概念。

最新更新