如何在Avalonia中使用MultiBinding绑定Border的Classes.current类?
Avalonia中使用MultiBinding绑定控件类的正确方式
你遇到的错误是因为Border.Classes.current并非有效的依赖属性元素语法,Classes.current是Avalonia提供的动态布尔附加属性,用于控制指定类是否被应用到控件上,不能通过元素语法直接设置。以下是两种正确的实现方式:
方案一:直接在Border属性中使用MultiBinding
<Border Classes.current="{MultiBinding Converter={StaticResource AreAllEqual}}"> <MultiBinding.Bindings> <Binding Path="." /> <Binding Path="CurrentStep" /> </MultiBinding.Bindings> <!-- 此处放置Border的内容 --> </Border>
方案二:通过Style Setter配置(适合样式复用场景)
<Border> <Border.Styles> <Style> <Setter Property="Classes.current" Value="{MultiBinding Converter={StaticResource AreAllEqual}}"> <MultiBinding.Bindings> <Binding Path="." /> <Binding Path="CurrentStep" /> </MultiBinding.Bindings> </Setter> </Style> </Border.Styles> <!-- 此处放置Border的内容 --> </Border>
关键说明
Classes.current是布尔属性:当你的AreAllEqual转换器返回true时,current类会被添加到Border的ClassList;返回false则自动移除。- 确保转换器
AreAllEqual能正确接收两个绑定值(当前DataContext和CurrentStep),并返回布尔类型的判断结果。
内容的提问来源于stack exchange,提问作者Ben Harden
相关产品推荐
相关产品推荐

