7

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

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

1 回答 1

11

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

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

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

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

于 2017-05-30T12:51:32.903 回答