将数据触发器XAML转换为c#

本文关键字:转换 XAML 数据 触发器 | 更新日期: 2023-09-27 17:53:20

<Image Width="16">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Value}" Value="False">
                    <Setter Property="Source" Value="Resources/image1.png"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Value}" Value="True">
                    <Setter Property="Source" Value="Resources/image2.png"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
参考上面的XAML代码,我对如何将其转换为XAML感到困惑,例如数据触发器部分,有人有任何想法吗?

谢谢。

将数据触发器XAML转换为c#

经过一些重构,我认为你需要这个:

Style style = new Style(typeof(Image));
// Style Setter to handle 'false' case
style.Setters.Add(new Setter(Image.SourceProperty, new BitmapImage(new Uri("Resources/image2.png", UriKind.Relative))));
// DataTrigger to handle 'true' case
DataTrigger dataTrigger = new DataTrigger();
dataTrigger.Binding = new Binding("Value");
dataTrigger.Value = true;
dataTrigger.Setters.Add(new Setter(Image.SourceProperty, new BitmapImage(new Uri("Resources/image1.png", UriKind.Relative))));
style.Triggers.Add(dataTrigger);
this.image.Style = style;