亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號