У меня проблема с моим приложением WPF, у меня есть Listbox
, который содержит UserControl
как элемент.WPF Listbox пользовательский элемент изображения не отображается
UserControl
есть изображение (красный квадрат на рисунке) с Source
связываются с ImageSource
собственности, как это:
<Image Name="Avatar" Height="56" Width="56" DockPanel.Dock="Left" Source="{Binding AvatarSource}"/>
private ImageSource avatarSource;
public ImageSource AvatarSource
{
get { return this.avatarSource; }
set
{
if(this.avatarSource != value)
{
this.avatarSource = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Когда я добавляю элемент в свой список, я устанавливаю свойство AvatarSource
, но изображение не отображается.
Я попытался восстановить UserControl
через Listbox
и у меня та же проблема, но когда я установил AvatarSource
свойство в UserControl
конструктора или метода UserControl_Loaded
, корректно отображается изображение.
/// MainWindow::CheckBox_Checked()
ListboxCustomItem itemUC = new ListboxCustomItem();
itemUC.AvatarSource = new BitmapImage(new Uri("pack://application:,,,/WindowSwitcher;component/Images/feca.png"));
// Add custom item to the listbox
VisualBindings.Items.Add(itemUC);
...
// Test for update the avatar image (custom item)
(VisualBindings.Items.GetItemAt(0) as ListboxCustomItem).setImageSource("feca.png");
VisualBindings.InvalidateVisual();
NotifyPropertyChanged("VisualBindings");
Где я ошибаюсь?
Проект доступен на Codeplex по следующему адресу: https://windowbinding.codeplex.com/SourceControl/latest
(Каждый код этикетка на эту тему связана с файлом в CodePlex)