wpf 如何使用Avalonia模拟DataTrigger?

oaxa6hgo  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(352)

我想根据图像的绑定值更改单元格内容。
这就是我对WPF应用程序所做的。

<DataGridTemplateColumn Header="Updated" Width="96" CanUserSort="True" SortMemberPath="Updated" HeaderStyle="{StaticResource CenterAlignmentColumnHeaderStyle}">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Image Name="MyImage" Source="Assets/Loading.ico" MaxWidth="16" MaxHeight="16" Margin="4" VerticalAlignment="Center" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Updated, IsAsync=True}" Value="false">
                    <Setter TargetName="MyImage" Property="Source" Value="Assets/False.ico" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Updated, IsAsync=True}" Value="true">
                    <Setter TargetName="MyImage" Property="Source" Value="Assets/True.ico" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

但似乎触发器并不存在于阿瓦隆尼亚。

<DataGridTemplateColumn Width="Auto"
                        SortMemberPath="Updated">
    <DataGridTemplateColumn.Header>
        <StackPanel>
            <Label Content="Updated"
                   HorizontalAlignment="Stretch"
                   HorizontalContentAlignment="Center"
                   Padding="20 0 0 0" />
        </StackPanel>
    </DataGridTemplateColumn.Header>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox Padding="0"
                      IsChecked="{Binding Updated^}"
                      HorizontalAlignment="Center"
                      IsEnabled="False" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

有没有办法模拟这个?

anhgbhbe

anhgbhbe1#

我设法使用Avalonia的Binding Classes特性实现了类似的功能。
我已经从这个示例中删除了一些噪声,但本质上这添加了两个类,IsUpdatedNotUpdated,并对每个类应用不同的样式:

<Image Source="Assets/Loading.ico" Classes.IsUpdated={Binding Updated} Classes.NotUpdated={Binding !Updated}>
  <Image.Styles>
    <Style Selector="Image.IsUpdated">
       <Style.Setters>
         <Setter Property="Source" Value="Assets/True.ico"/>
       </Style.Setters>
    </Style>
    <Style Selector="Image.NotUpdated">
      <Style.Setters>
        <Setter Property="Source" Value="Assets/False.ico"/>
      </Style.Setters>
    </Style>
  </Image.Styles>
</Image>

相关问题