使用转换器绑定带有2个值的图像

时间:2010-05-19 19:36:22

标签: silverlight silverlight-4.0

是否可以为图像控件绑定

设置2个数据字段
**<Image Source="{Binding ItemID, Converter={StaticResource IDToImageConverter}}" Height="50" />**  

现在我需要再添加一个价值Price。需要发送均价作为IDToImageConverter函数的参数

我该怎么做?

现在我需要先检查价格值我需要检查3个条件

在我的IDToImageConverter函数

if( price> 5o)  
{
// then get the ItemID based on the value bind image here
if(ItemID >20)
{
// bind image1
}
if(ItemID >50)
{
// bind image2
}

}

if( price> 100)
{
// as above  codition we  do here
}

现在我如何在IDToImageConverter中添加以上功能?  任何想法我怎么解决它


            
                
    
    
      

<Image Source="{Binding ItemID, Converter={StaticResource IDToImageConverter}}" Height="50" />  
</DataTemplate>  
</data:DataGridTemplateColumn.CellTemplate>  
</data:DataGridTemplateColumn>  
</data:DataGrid.Columns>  
</data:DataGrid>  

public class IDToImageConverter : IValueConverter  
    {  
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
    {  
    Uri uri = new Uri("~/Images/" + value.ToString()+ ".jpg", UriKind.Relative);  
    return new BitmapImage(uri);  
    }
提前谢谢。对于你提供的任何帮助 王子

1 个答案:

答案 0 :(得分:0)

开箱即用,这是不可能的。 SL不支持MultiBinding,并且ConverterParameter选项不可绑定(否则,您可以执行类似Source = {Binding ItemID,Converter = {...},ConverterParameter = {Binding Price}}的操作 - 但正如我所说,那不是可能的)。

恕我直言,最好的解决方案是在您可以绑定到的ViewModel / data对象中提供ImageUrl属性:

public Uri ImageUrl
{
  get
  {
    if (Price > 50)
    {
      if (ItemID > 20)
        return new Uri("...");
      //...
    }
    //...
  }
}

如果这不是一个选项,您可以尝试这里描述的MultiBinding解决方法: http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/

干杯,亚历克斯