У меня есть приложение WPF, в котором я использую несколько изображений. Большинство изображений установлено в XAML-коде, так как они больше не будут меняться. Для Build Action
всех моих файлов изображений установлено значение "Ресурс", а для Copy to Output Directory
установлено значение "Не копировать" < / сильный>. Они показаны, как и ожидалось, вот пример того, как они установлены:
<ribbon:RibbonApplicationMenu SmallImageSource="/Voetbal;component/Images/Ball_16.png">
//or
<ribbon:RibbonButton LargeImageSource="/Voetbal;component/Images/Calendar_32.png" />
//or
<Image Source="/Voetbal;component/Images/remove.png" Width="16" Height="16" />
Но у меня также есть изображения, которые нужно установить через C #. В UserControl у меня есть ListView, который содержит определенный столбец со следующей разметкой:
<GridViewColumn Header="" Width="32">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Icon}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
ItemsSource для ListView - это универсальный список, содержащий экземпляры элементов, которые будут объединять ListView. Эти элементы имеют два строковых поля и ImageSource (с именем «Icon»). Я установил свойство Icon следующим образом:
var icon = new BitmapImage(new Uri("/Images/Gold_16.png", UriKind.RelativeOrAbsolute));
myViewModel.Items[0].Icon = icon;
Но проблема в том, что я не вижу изображения в ListView. Я также пробовал следующие фрагменты кода. Я использовал эти фрагменты из ответов на аналогичные вопросы здесь, на SO, и на других форумах. Не то чтобы я поленился или ничего не пробовал, но я не могу понять, как это исправить ...
var icon = new BitmapImage(new Uri("/Voetbal;component/Images/Gold_16.png", UriKind.RelativeOrAbsolute));
//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Voetbal;component/Images/Gold_16.png");
icon.EndInit();
//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Images/Gold_16.png");
icon.EndInit();
PS: Я знаю, что привязка моей модели ViewModel работает, потому что два строковых свойства правильно отображаются в других столбцах ListView.
Кто-нибудь знает, как я могу установить ImageSource и правильно привязать его к ListView?
Заранее спасибо!
Icon
вашей модели представления может бытьstring
, создаватьImageSource
в коде не нужно. - person Dennis   schedule 09.10.2012Icon
свойствоPropertyChange
уведомление при изменении? - person Rachel   schedule 09.10.2012