为了账号安全,请及时绑定邮箱和手机立即绑定

C# Wpf 绑定类型适配器

C# Wpf 绑定类型适配器

C#
月关宝盒 2022-10-15 14:23:00
截至目前,我使用直接绑定到图像的源分配 TreeView 项的图像:<DataTemplate DataType="{x:Type local:GeoPoint}">      <StackPanel Orientation="Horizontal">           <Image Source="{Binding Color}" Height="32" />           <TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>      </StackPanel></DataTemplate>颜色绑定是指包含PNG路径的字符串,例如“/Resources/red.png”我想让自定义类型“MarkerColor”的颜色变量,一个包含几种颜色的枚举,并让图像源绑定引用这个值,这样如果颜色 = MarkerColor.green;绑定将引用“/Resources/green.png”注意PNG的名字不一定和MarkerColor的名字一样,需要一个“适配器”来转换类型我知道如何在 Java Android SDK 中做到这一点,但不确定如何在 Wpf 中实现这一点
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您可以创建一个知道如何将枚举值转换为有效资源的转换器:


public class ColorResourceConverter : IValueConverter

{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

    {

        MarkerColor color = (MarkerColor)value;

        Uri uri;

        switch(color)

        {

            case MarkerColor.Green:

                uri = new Uri("Resources/green.png");

                break;

            case MarkerColor.Red:

                uri = new Uri("Resources/red.png");

                break;

            //...

            default:

                uri = new Uri("Resources/default.png");

                break;

        }


        return new BitmapImage(uri);

    }


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

    {

        throw new NotSupportedException();

    }

}

用法:


<DataTemplate DataType="{x:Type local:GeoPoint}">

    <DataTemplate.Resources>

        <local:ColorResourceConverter x:Key="ColorResourceConverter" />

    </DataTemplate.Resources>

    <StackPanel Orientation="Horizontal">

        <Image Source="{Binding Color, Converter={StaticResource ColorResourceConverter}}" Height="32" />

        <TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>

    </StackPanel>

</DataTemplate>


查看完整回答
反对 回复 2022-10-15
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号