【发布时间】:2023-04-03 16:06:01
【问题描述】:
选择器看起来与 CSS 非常相似。 Avalonia 中有哪些选择器?例如这个选择器是什么意思:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
【问题讨论】:
标签: xaml avaloniaui
选择器看起来与 CSS 非常相似。 Avalonia 中有哪些选择器?例如这个选择器是什么意思:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
【问题讨论】:
标签: xaml avaloniaui
是的,选择器与 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]:这将匹配任何具有IsDefault 属性为true 的Button
Button /template/ ContentPresenter 这匹配 Button 的控制模板中的 ContentPresenter [2][1]:请注意,对象的类型实际上是通过查看其IStyleable.StyleKey 属性来确定的,因此如果您确实希望将继承自Button 的控件设置为Button,那么您可以在你的类上实现IStyleable.StyleKey 以返回typeof(Button)。
[2]:这类似于 CSS 中的(现已弃用)/deep/ 运算符; CSS shadow DOM 是一个与控制模板非常相似的概念。
【讨论】: