选择器

OfType

<Style Selector="Button">
<Style Selector="local|Button">

按类型选择控件。上面的第一个示例选择了Avalonia.Controls.Button类。要在类型中包含XAML命名空间,请使用|字符分隔命名空间和类型。

该选择器不匹配派生类型。要匹配派生类型,请使用Is选择器。

注意,对象的类型实际上是通过查看其IStyleable.StyleKey属性确定的。默认情况下,它只返回当前实例的类型,但是如果,例如,您希望从Button继承的控件被视为Button,那么您可以在类上实现IStyleable.StyleKey属性,返回typeof(Button)

Name

<Style Selector="#myButton">
<Style Selector="Button#myButton">

按其 Name 属性选择控件,并使用#字符。

Class

<Style Selector="Button.large">
<Style Selector="Button.large:focus">

选择具有指定样式类的控件。多个类应使用.字符分隔,对于伪类,使用:字符。如果指定了多个类,则控件必须具有所有请求的类才能匹配。

Is

<Style Selector=":is(Button)">
<Style Selector=":is(local|Button)">

这与OfType选择器非常相似,但它还匹配派生类型。

同样,对象的类型实际上是通过查看其IStyleable.StyleKey属性来确定的。

Child

<Style Selector="StackPanel > Button">

使用>字符来定义子选择器。此选择器匹配_逻辑树中的直接子级_,因此在上面的示例中,选择器将匹配任何是StackPanel的直接逻辑子级的Button

Descendant

<Style Selector="StackPanel Button">

当两个选择器之间用空格分隔时,选择器将匹配逻辑树中的后代。因此,在这种情况下,选择器将匹配任何是StackPanel的逻辑后代的Button

PropertyEquals

<Style Selector="Button[IsDefault=true]">

匹配具有指定属性设置为指定值的任何控件。

**注意:**在XAML中使用选择器时,AttachedProperty必须用括号括起来。

<Style Selector="TextBlock[(Grid.Row)=0]">

**注意:**在XAML中使用选择器时,属性必须支持TypeConverter

Template

<Style Selector="Button /template/ ContentPresenter">

匹配控件模板中的控件。此处列出的所有其他选择器均适用于逻辑树。如果要选择控件模板中的控件,则必须使用此选择器。该示例选择Button模板中的ContentPresenter控件。

Not

<Style Selector="TextBlock:not(.h1)">

否定内部选择器。

Or

<Style Selector="TextBlock, Button">

找到与任何这些选择器之一匹配的元素。每个选择器之间用逗号","分隔。

Nth Child

<Style Selector="TextBlock:nth-child(2n+3)">

根据元素在同级兄弟元素中的位置匹配元素。

Nth Last Child

<Style Selector="TextBlock:nth-last-child(2n+3)">

根据元素在同级兄弟元素中的位置(从末尾计数)匹配元素。

Nth Child and Nth Last Child Syntax

:nth-child():nth-last-child()接受一个参数,描述了在同级兄弟元素列表中匹配元素索引的模式。元素索引从1开始。下面的示例使用了:nth-child(),但也适用于:nth-last-child()

关键字表示法

odd:表示索引在同级兄弟元素系列中为奇数的元素:1、3、5等。

even:表示索引在同级兄弟元素系列中为偶数的元素:2、4、6等。

函数表示法

An+B:表示在元素索引的列表中,匹配自定义数字模式的元素,该模式由An+B定义,其中:

  • A是一个整数步长,

  • B是一个整数偏移量,

  • n是非负整数,从0开始。

可以理解为_从第B个开始的每个第A个元素_

函数表示法示例

以下是一些使用函数表示法的示例:

示例
表示方式

:nth-child(odd)

奇数元素:135

:nth-child(even)

偶数元素:246

:nth-child(2n+1)

奇数元素:1(2×0+1), 3(2×1+1), 5_(2×2+1)_等,相当于:nth-child(odd)

:nth-child(2n)

偶数元素:2(2×1), 4(2×2), 6_(2×3)_等,相当于:nth-child(even)

:nth-child(3n+1)

每隔3个元素的第一个元素:1(3×0+1), 4(3×1+1), 7_(3×2+1)_等

:nth-child(3n+2)

每隔3个元素的第二个元素:2(3×0+2), 5(3×1+2), 8_(3×2+2)_等

:nth-child(3n)

每隔3个元素的第三个元素:3(3×1), 6(3×2), 9_(3×3)_等

### 在线的 nth-child & nth-last-child 测试器

您可以使用下面的链接来轻松评估nth-childnth-last-childnth-child-tester

Last updated