You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过绑定视图模型为Avalonia DataGridRow设置样式

在Avalonia中为DataGridRow基于视图模型动态设置样式类

要实现基于绑定的Player视图模型给DataGridRow添加isRequired类并应用样式,有两种简洁的实现方式:

方法一:绑定Classes属性动态添加类

这种方式和你最初定义的类样式完美配合,直接通过视图模型的布尔属性控制类的添加:

<DataGrid Items="{Binding Players}">
  <DataGrid.Styles>
    <!-- 你定义的isRequired类样式 -->
    <Style Selector="DataGridRow.isRequired">
      <Setter Property="Background" Value="LightGreen" />
    </Style>
    <!-- 为DataGridRow绑定Classes,控制isRequired类的添加 -->
    <Style Selector="DataGridRow">
      <Setter Property="Classes.isRequired" Value="{Binding IsRequired}" />
    </Style>
  </DataGrid.Styles>
</DataGrid>

关键说明:

  • 确保你的Player视图模型中存在IsRequired布尔属性,且该属性实现了INotifyPropertyChanged(比如继承ObservableObject),这样属性值变化时UI会自动更新。
  • Classes.isRequired是Avalonia的特殊绑定语法,当绑定的IsRequired为true时,自动给当前DataGridRow添加isRequired类,触发对应的样式。

方法二:直接用DataTrigger设置样式

如果不想通过类来间接控制,也可以直接在DataGridRow的样式中添加数据触发器,根据视图模型属性直接设置样式:

<DataGrid Items="{Binding Players}">
  <DataGrid.Styles>
    <Style Selector="DataGridRow">
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsRequired}" Value="True">
          <Setter Property="Background" Value="LightGreen" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </DataGrid.Styles>
</DataGrid>

这种方式更直接,省去了额外定义类样式的步骤,适合简单的样式控制场景。

内容的提问来源于stack exchange,提问作者Andrew Arnott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:25:20