2013-07-24 41 views
0

我正在创建一个应用程序,显示一个rss,它具有几种类型的消息(alert,warning1,warning2)。所有类型都有一个png(与消息相同)。它们全部放置在我的项目的Images文件夹中。如何根据名称(字符串)绑定图像源?

因此,在我的应用程序中,我绑定到一个newsobjects列表。新对象具有字符串Type(alert,warning1,warning2)。

但是,如何将图像的来源绑定到基于此Type属性的正确图像?

回答

1

你必须使用的IValueConverter:

如:

public class ImageConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      var imagePath = (string) value; 

      switch (imagePath) 
      { 
       case "warning": 
        return "/Images/warning.png"; 
       case "error": 
        return "/Images/error.png"; 
       default: 
        throw new InvalidOperationException(); 
      } 
     }  
    } 

然后在XAML:

<UserControl.Resources> 
     <converters:ImageConverter x:Key="imageConverter"/> 

....

和finaly:

<Image Source="{Binding DataItem.Type,Converter={StaticResource imageConverter}}" /> 
+0

感谢您的职位。但是你在哪里定义“转换器”,以及你如何做到这一点?我创建了一个新类并粘贴了你的代码。针对该命名空间没有帮助我......: -/ – Jason94

+0

这只是xaml中的一个命名空间。例如:xmlns:转换器=“clr-namespace:WpfApplication1.Converters”。你可以发布你的代码,以便我们可以查看它。 –

+0

明白了,谢谢! – Jason94

1

在这种newsObject类的构造函数中添加switch(Type)块,并有申请根据Type值的不同图像(我认为在这个类,你有图像或映像路径属性附加伤害)

相关问题