powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MultiValueConverter
8 сообщений из 8, страница 1 из 1
MultiValueConverter
    #38595623
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема связывания Image.Source через MultiValueConverter
Чтобы не мутить мозги читателям написал немного демо-кода:
В основе: некоторая картинка ( Image1.png ), которую привязываю к Image разными способами.
Привязка через MultiValueConverter не работает. Подскажите почему.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<Window>
...
  <Window.Resources>
    <wpf1:CMyMultiConverter x:Key="MyMultiConverter"/>
    <wpf1:CMyConverter x:Key="MyConverter"/>
  </Window.Resources>

  <Grid>
    <StackPanel Orientation="Vertical">
    

      <!--Работает-->
      <Image Source="/Image1.png" Height="50" Width="50" Stretch="Fill"/>
			
      <!--Работает-->
      <Image Height="50" Width="50" Stretch="Fill">
        <Image.Source>/Image1.png</Image.Source>
      </Image>
			
      <!--Работает-->
      <Image Height="50" Width="50" Stretch="Fill" Source="{Binding Converter={StaticResource MyConverter}}" />

      <!--Не работает ??? -->
      <Image Height="50" Width="50" Stretch="Fill">
        <Image.Source>
          <MultiBinding Converter="{StaticResource MyMultiConverter}" />
        </Image.Source>
      </Image>

    </StackPanel>
  </Grid>
</Window>


К этому XAML-у прилагается два конвертора простой и непростой:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class CMyConverter : IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {			
    return @"/Image1.png";
  }
  ...
}

public class CMyMultiConverter : IMultiValueConverter
{
  public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    return @"/Image1.png";
  }
  ...
}
...
Рейтинг: 0 / 0
MultiValueConverter
    #38595668
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
  public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
       var result = new BitmapImage();
       result.BeginInit();
       result.UriSource = new Uri("...");
       result.EndInit();
       return result;
  }

?

зы: Может проще триггером?
...
Рейтинг: 0 / 0
MultiValueConverter
    #38596288
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за подсказку. Попробую.
...
Рейтинг: 0 / 0
MultiValueConverter
    #38601597
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
  public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
       var result = new BitmapImage();
       result.BeginInit();
       result.UriSource = new Uri("...");
       result.EndInit();
       return result;
  }

?

зы: Может проще триггером?
Это что, при каждом изменении привязанного свойства будет аллоцироваться целая картинка? Предлагаю при старте приложения заинициализировать все такие картинки в словарь ресурсов или ещё куда и брать картинки из него. Т. е. в коде выше будет не инициализация каждый раз, а просто забор картинки из словаря по ключу, который в values будет. Кстати, можно, наверное, и без мультибайндинга обойтись будет.

У меня, по крайней мере, так сделано. Только словарь должен быть либо в репозитории, либо статичным (читай, глобальным) ресурсом.
...
Рейтинг: 0 / 0
MultiValueConverter
    #38601605
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Это что, при каждом изменении привязанного свойства будет аллоцироваться целая картинка? Предлагаю при старте приложения заинициализировать все такие картинки в словарь ресурсов или ещё куда и брать картинки из него. Т. е. в коде выше будет не инициализация каждый раз, а просто забор картинки из словаря по ключу, который в values будет. Кстати, можно, наверное, и без мультибайндинга обойтись будет.Именно этого эффекта можно добиться при использовании триггера, что сразу и было предложено.
...
Рейтинг: 0 / 0
MultiValueConverter
    #38601621
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Это что, при каждом изменении привязанного свойства будет аллоцироваться целая картинка? Предлагаю при старте приложения заинициализировать все такие картинки в словарь ресурсов или ещё куда и брать картинки из него. Т. е. в коде выше будет не инициализация каждый раз, а просто забор картинки из словаря по ключу, который в values будет. Кстати, можно, наверное, и без мультибайндинга обойтись будет.Именно этого эффекта можно добиться при использовании триггера, что сразу и было предложено.
Пример?
...
Рейтинг: 0 / 0
MultiValueConverter
    #38601625
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей Кпропущено...
Именно этого эффекта можно добиться при использовании триггера, что сразу и было предложено.
Пример?Пример чего? ResourceDictionary + Style + Trigger (MultiTrigger) + Setter на свойство Image ?
...
Рейтинг: 0 / 0
MultiValueConverter
    #38601657
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320пропущено...

Пример?Пример чего? ResourceDictionary + Style + Trigger (MultiTrigger) + Setter на свойство Image ?
Да, но картинки-то должны всё равно быть предзагружены-прединициализированы? Я именно на это обратить внимание хотел.

Да, вроде, у ТСа они и так в ресурсах сидят. Просто он в коде конвертера зачем-то пути начал писать, а не из ресурсов считывать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MultiValueConverter
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]