选择器看起来与CSS非常相似。 Avalonia有哪些选择器?例如,这个选择器的含义是什么:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
答案 0 :(得分:4)
是的,选择器与CSS非常相似。目前(0.5.0 alpha)the following selectors are available。我通过示例解释这些选择器,否则很难理解:
Button
:这会按类型选择控件,因此如果您编写选择器Button
,它将匹配Avalonia.Controls.Button
类。它不会匹配派生类型[1] :is(Button)
:这与Class
非常相似,但它也匹配派生类型Button TextBlock
:当两个选择器由空格分隔时,选择器将匹配后代,因此在这种情况下,选择器将匹配作为TextBlock
的逻辑后代的任何Button
Button > TextBlock
:当两个选择器被>
分隔时,选择器将匹配子项,因此在这种情况下,选择器将匹配任何TextBlock
,它是一个直接逻辑子项Button
Button#MyButton
这会将Button
与Name
MyButton
Button.MyClass
这将匹配任何Button
字符串MyClass
作为其Classes
Button:disabled
这会将Button
与:disabled
pseudo-class Button[IsDefault=true]
:这将匹配Button
属性为IsDefault
的所有true
Button /template/ ContentPresenter
这与ContentPresenter
[2] Button
相匹配
[1]:请注意,对象的类型实际上是通过查看其IStyleable.StyleKey
属性来确定的,因此如果您确实希望将继承自Button
的控件设置为{{1然后,您可以在类上实现Button
以返回IStyleable.StyleKey
。
[2]:这类似于CSS中的(现已弃用的)typeof(Button)
运算符; CSS shadow DOM与控制模板的概念非常相似。