簡體   English   中英

使用轉換器的 WPF SVG 圖像綁定

[英]WPF SVG image binding using a converter

我想從以下位置更改我的圖像源:

<Image Source="{svg:SvgImage image.svg}"/>

對於在枚舉屬性上使用綁定的東西:

XAML:

<Resources>
    <local:MyConverter x:Key="MyConverter" />
</Resources>    

<Image Source="{svg:SvgImage Binding MyEnumProperty, Converter={StaticResource MyConverter}}" />

后面的代碼:

public enum MyEnum 
{
    Value1,
    Value2
}

public class MyConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var myValue = (MyEnum)(value);
        switch (myValue)
        {
            case MyEnum.Value1:
                return "image1.svg";
            case MyEnum.Value2:
                return "image2.svg";
            default:
                throw new NotImplementedException();
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

這不起作用,我懷疑這與將svg:SvgImageBinding MyEnumProperty組合在同一語句中有關。

我收到以下錯誤:

The member "Converter" is not recognized or is not accessible.

The property 'Converter' was not found in type 'SvgImageExtension'.

問題:這樣做的正確方法是什么?

表達方式

{svg:SvgImage Binding MyEnumProperty ...}

不是有效的 XAML,並且因為 SvgImage 是一個標記擴展,你不能綁定它的屬性。

但是,您可以在圖像樣式中使用 DataTriggers 而不是 Binding with a Converter:

<Image>
    <Image.Style>
        <Style TargetType="Image">
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyEnumProperty}" Value="Value1">
                    <Setter Property="Source" Value="{svg:SvgImage image1.svg}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding MyEnumProperty}" Value="Value2">
                    <Setter Property="Source" Value="{svg:SvgImage image2.svg}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM