样式选择器在 Avalonia 中是如何工作的?
How do style selectors work in Avalonia?
选择器看起来与 CSS 非常相似。 Avalonia 有哪些选择器?这个选择器是什么意思,例如:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
是的,选择器与 CSS 非常相似。当前(0.5.0 alpha)the following selectors are available。我正在通过示例解释这些选择器,否则很难理解:
Button
:按类型选择一个控件,所以如果你写一个选择器Button
那么它将匹配Avalonia.Controls.Button
class。它不会匹配派生类型[1]
:is(Button)
:这与 Class
非常相似,除了它还匹配派生类型
Button TextBlock
:当两个选择器被space分隔时,选择器将匹配后代,所以在这种情况下选择器将匹配任何TextBlock
是逻辑后代共 Button
Button > TextBlock
:当两个选择器被>
隔开时,那么选择器会匹配children,所以在这种情况下选择器会匹配任何TextBlock
这是 Button
的直接逻辑 child
Button#MyButton
这将匹配任何 Button
与 MyButton
的 Name
Button.MyClass
这将匹配任何 Button
与字符串 MyClass
作为其 Classes
中的条目
Button:disabled
这将匹配任何 Button
与 :disabled
pseudo-class
Button[IsDefault=true]
:这将匹配任何 IsDefault
属性 为 true
的 Button
Button /template/ ContentPresenter
这匹配 Button
[2] 的控件模板中的 ContentPresenter
[1]:请注意 object 的类型实际上是通过查看它的 IStyleable.StyleKey
属性 来确定的,因此如果您确实想要继承自 [=10 的控件=] 样式设置为 Button
,那么您可以在 class 上实现 IStyleable.StyleKey
到 return typeof(Button)
.
[2]:这类似于CSS中的(现已弃用)/deep/
运算符; CSS shadow DOM 是一个与控件模板非常相似的概念。
选择器看起来与 CSS 非常相似。 Avalonia 有哪些选择器?这个选择器是什么意思,例如:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
是的,选择器与 CSS 非常相似。当前(0.5.0 alpha)the following selectors are available。我正在通过示例解释这些选择器,否则很难理解:
Button
:按类型选择一个控件,所以如果你写一个选择器Button
那么它将匹配Avalonia.Controls.Button
class。它不会匹配派生类型[1]:is(Button)
:这与Class
非常相似,除了它还匹配派生类型Button TextBlock
:当两个选择器被space分隔时,选择器将匹配后代,所以在这种情况下选择器将匹配任何TextBlock
是逻辑后代共Button
Button > TextBlock
:当两个选择器被>
隔开时,那么选择器会匹配children,所以在这种情况下选择器会匹配任何TextBlock
这是Button
的直接逻辑 child
Button#MyButton
这将匹配任何Button
与MyButton
的 Button.MyClass
这将匹配任何Button
与字符串MyClass
作为其Classes
中的条目
Button:disabled
这将匹配任何Button
与:disabled
pseudo-classButton[IsDefault=true]
:这将匹配任何IsDefault
属性 为true
的 Button /template/ ContentPresenter
这匹配Button
[2] 的控件模板中的
Name
Button
ContentPresenter
[1]:请注意 object 的类型实际上是通过查看它的 IStyleable.StyleKey
属性 来确定的,因此如果您确实想要继承自 [=10 的控件=] 样式设置为 Button
,那么您可以在 class 上实现 IStyleable.StyleKey
到 return typeof(Button)
.
[2]:这类似于CSS中的(现已弃用)/deep/
运算符; CSS shadow DOM 是一个与控件模板非常相似的概念。