[英]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:SvgImage
和Binding 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.