связующее изображение с 2 значениями с конвертером - PullRequest
0 голосов
/ 19 мая 2010

возможно ли установить 2 поля данных для привязки управления изображением

**<Image Source="{Binding ItemID, Converter={StaticResource IDToImageConverter}}" Height="50" />**  

теперь здесь мне нужно добавить еще одно значение Цена сейчас. необходимо отправить четную цену в качестве параметра для функции 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 голосов
/ 20 мая 2010

из коробки, это невозможно. MultiLinding не поддерживается в SL, и опция ConverterParameter не может быть привязана (в противном случае вы можете сделать что-то вроде Source = {Binding ItemID, Converter = {...}, ConverterParameter = {Binding Price}} - но, как я уже сказал, это не так возможно).

ИМХО, лучшим решением было бы предоставить свойство ImageUrl в вашем объекте ViewModel / data, к которому вы можете привязать:

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/

Ура, Алекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...