我有多个不同类型的画布图像(图像源,几何体,路径),并且希望仅根据字符串绑定显示1。
最好的办法是什么?
我希望它可以重复使用,因此我可以将此代码放在用户控件中,然后在应用程序周围放置许多这些图像,然后选择显示哪一个。
像这样:
<CanvasImage Image="Pie"/>
<CanvasImage Image="Dog"/>
将它们全部在用户控件视图中声明并使用可见性绑定
,计算成本是否太高Pie canvas示例:
<canvas>
<Data ="m24,98,07">
</canvas>
狗画布示例:
<canvas>
<image source="">
<canvas>
答案 0 :(得分:0)
此转换器直接返回图像源,具体取决于它接收的值。
UPDATE table_name SET column_name=replace(column_name, '\t', '') //Remove all tab
XAML中的用法:
namespace TestTreeView.Views
{
public class StringToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string file = "";
string v = value as string;
switch (v)
{
case "Pie":
file = @".\path\to\your\pie.jpg";
break;
case "Dog":
file = @".\path\to\your\dog.jpg";
break;
default:
return null;
}
return new BitmapImage(new Uri(file, UriKind.RelativeOrAbsolute));
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
原始回答
我认为您需要使用转换器 它将采用一个ConverterParameter,一个String,它将告诉绑定值是什么,并返回一个Visiblity来指示画布是否应该可见。
<Window xmlns:local="clr-namespace:YourNamespace.Views" ...>
<Window.Resources>
<local:StringToImageConverter x:Key="stringToImageConverter"/>
</Window.Resources>
<Grid>
<Canvas>
<Image Source="{Binding YourString, Converter={StaticResource stringToImageConverter}}"/>
</Canvas>
</Grid>
</Window>
XAML中的用法:
namespace YourNamespace.Views
{
public class StringToCanvasVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string v = value as string;
string p = parameter as string;
return (v != null && p != null && v == p) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}