Selectors look very similar to CSS. What selectors are available in Avalonia? What is the meaning of this selector for example:
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="#ffffff" />
</Style>
Yes, selectors are very similar to CSS. Currently (at 0.5.0 alpha) the following selectors are available. I'm explaining these selectors by example, as otherwise it gets hard to understand:
Button
: This selects a control by type, so if you write a selector Button
then it will match the Avalonia.Controls.Button
class. It won't match derived types [1]:is(Button)
: This is very similar to Class
except it also matches derived typesButton TextBlock
: When two selectors are separated by a space, then the selector will match descendants, so in this case the selector will match any TextBlock
that is a logical descendant of Button
Button > TextBlock
: When two selectors are separated by a >
, then the selector will match children, so in this case the selector will match any TextBlock
that is a direct logical child of Button
Button#MyButton
this will match any Button
with the Name
of MyButton
Button.MyClass
this will match any Button
with the string MyClass
as an entry in its Classes
Button:disabled
this will match any Button
with the :disabled
pseudo-class
Button[IsDefault=true]
: this will match any Button
which has an IsDefault
property of true
Button /template/ ContentPresenter
this matches a ContentPresenter
in the control template of a Button
[2][1]: Note the type of an object is actually determined by looking at its IStyleable.StyleKey
property, so if you do want your control which inherits from Button
to be styled as a Button
, then you can implement the IStyleable.StyleKey
on your class to return typeof(Button)
.
[2]: This is similar to the (now deprecated) /deep/
operator in CSS; CSS shadow DOM is a very similar concept to control templates.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With