我制作了一个填充DataGrid的代码。一切正常,但现在我想在字段附近添加“名称”图像。该图像的链接由数据库抓取。图像采用svg格式,为此我使用资源svg2xaml。
这行代码返回图像:
DrawingImage logo = SvgReader.Load(new MemoryStream(new System.Net.WebClient().DownloadData("http://upload.wikimedia.org/wikipedia/commons/c/c5/Logo_FC_Bayern_München.svg")));
我使用此代码填充DataGrid:
MainWindow.AppWindow.Squadre_DataGrid.Items.Add(new Teams.Club_Information
{
name = reader["name"].ToString()
}
这是我的xaml结构:
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path = 'name'}" ClipboardContentBinding="{x:Null}" Header="Codice" Width="*" />
...
有人可以解释一下如何通过代码添加此图像吗?
更新 - 动态链接:
DrawingImage logo = SvgReader.Load(new MemoryStream(new System.Net.WebClient().DownloadData(reader["link"].ToString())));
阅读器包含链接。我想将此链接发送到NameToImageConverter,就像引用:NameToImageConverter nm = new NameToImageConveter();
但这是不可能的,因为它是一个控件。那我该怎么做呢?
答案 0 :(得分:1)
如果不想添加新列,则必须将DataGridTextColumn替换为DataGridTemplateColumn:
<local:NameToImageConverter x:Key ="NameToImageConverter" />
请注意,您必须将转换器添加到窗口资源中:
public class NameToImageConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// here you can return DrawingImage based on value that represents name field of your structure
// just for example the piece of your code:
if (value is string && !String.IsNullOrEmpty(value as string))
{
return SvgReader.Load(new MemoryStream(new System.Net.WebClient().DownloadData(value as string)));
}
else
{
// if value is null or not of string type
return yourDefaultImage;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
在哪里&#34;本地&#34;是转换器的命名空间。和转换器本身:
var expr = new RegExp('expression');
str = str.replace(expr,replace_str);