Я создал собственный ItemsControl под названием Toolbox.Я хочу иметь возможность отображать изображения в этой панели инструментов - это часть дизайнера диаграмм.
Мой xaml выглядит следующим образом:
<d:Toolbox ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Library}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</d:Toolbox>
и моя ViewModel:
public ObservableCollection<ElectricalLibrary> l = null;
public ObservableCollection<Image> _images = null;
public ObservableCollection<Image> Library
{
get
{
if (l == null)
{
DataAccessLayerClass dc = new DataAccessLayerClass();
dc.LoadComponents();
l = dc.Library;
foreach (ElectricalLibrary lib in l) {
Image finalImage = new Image();
finalImage.Width = 80;
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri(lib.url.ToString());
logo.EndInit();
finalImage.Source = logo;
MessageBoxResult result = MessageBox.Show(logo.UriSource.ToString());
_images.Add(finalImage);
}
}
return _images;
}
set { _images = value; }
}
И это файл ресурсов для самой панели инструментов:
<Style TargetType="{x:Type s:Toolbox}">
<Setter Property="SnapsToDevicePixels"
Value="true" />
<Setter Property="Focusable"
Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="{TemplateBinding Border.BorderThickness}"
Padding="{TemplateBinding Control.Padding}"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Panel.Background}"
SnapsToDevicePixels="True">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Margin="0,5,0,5"
ItemHeight="{Binding Path=DefaultItemSize.Height, RelativeSource={RelativeSource AncestorType=s:Toolbox}}"
ItemWidth="{Binding Path=DefaultItemSize.Width, RelativeSource={RelativeSource AncestorType=s:Toolbox}}" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
Я храню только URL-адреса изображений в базе данных, изображения хранятся на диске.Я беру объект сущности и создаю изображение, добавляю его в ObservableCollection изображений и связываю элемент управления Image с LIbrary в xaml.
Очевидно, что код не работает.Но как заставить это работать?Список с изображениями загружен правильно.
Спасибо за помощь.