【问题标题】:How do style selectors work in Avalonia?样式选择器如何在 Avalonia 中工作?
【发布时间】:2023-04-03 16:06:01
【问题描述】:

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

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

【问题讨论】:

    标签: xaml avaloniaui


    【解决方案1】:

    是的,选择器与 CSS 非常相似。目前(0.5.0 alpha)the following selectors are available。我通过示例来解释这些选择器,否则很难理解:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2022-11-15
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多