Не отображаются изображения в Canvas
Пробую создать приложение в котором изображения буду приближаться друг к другу. Сделал разметку, написал привязку. Сейчас встала проблема с тем, что в Canvas не отображается пара изображений и я не понимаю в чем может быть проблема. Список создается корректно. В него добавлены 2 изображения у которых в Source будет нужный BitmapImage. Для проверки вытащил Image в StackPanel, задал ресурс и изображения отобразились. Так же задавал высоту и ширину изображений, но ничего не помогло. В чем моя ошибка и чего я не понимаю? Разметка:
<UserControl x:Class="Test.Views.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Test"
xmlns:view="clr-namespace:Test.Views"
xmlns:vm="clr-namespace:Test.VM"
xmlns:wpfToolKit="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="800">
<UserControl.DataContext>
<vm:TestVM />
</UserControl.DataContext>
<StackPanel Orientation="Vertical">
<Menu>
<StackPanel Orientation="Horizontal">
<Button x:Name="Reset" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel HorizontalAlignment="Center">
<Image />
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Сброс</TextBlock>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button x:Name="Start" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel HorizontalAlignment="Center">
<Image />
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Старт</TextBlock>
</StackPanel>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button x:Name="Speed" HorizontalAlignment="Center" VerticalAlignment="Center"
Content="Скорость" />
<ListView />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button x:Name="Image" HorizontalAlignment="Center" VerticalAlignment="Center"
Content="Изображения" />
</StackPanel>
</Menu>
<ItemsControl ItemsSource="{Binding Images}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Height="300" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Source}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Код VM:
private readonly Dictionary<string, List<BitmapImage>> _dictionaryImages = new();
private ObservableCollection<string> _imageNames;
public ObservableCollection<string> ImageNames
{
get => _imageNames;
set
{
_imageNames = value;
OnPropertyChanged(nameof(ImageNames));
}
}
private ObservableCollection<Image> _images = new();
public ObservableCollection<Image> Images
{
get => _images;
set
{
_images = value;
OnPropertyChanged(nameof(Images));
}
}
private string _selectedImageName;
public string SelectedImageName
{
get => _selectedImageName;
set
{
if (_selectedImageName == value)
return;
_selectedImageName = value;
OnPropertyChanged(nameof(SelectedImageName));
if (!_dictionaryImages.TryGetValue(value, out var images))
return;
Images.Clear();
foreach (var bitmapImage in images)
{
Images.Add(new Image
{
Source = bitmapImage
});
OnPropertyChanged(nameof(Images));
}
}
}
public TestVM()
{
ImagesManager.GetImages(_dictionaryImages, "Test");
ImageNames = new ObservableCollection<string>(_dictionaryImages.Keys);
}
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}