(Как долго мы используем OpenID? Кажется, я не подключил его к какому-либо провайдеру, и ни один FAQ на планете, кажется, не говорит вам, что делать, когда вы потеряете свой OpenID. Мне пришлось создать новую учетную запись. Арх!)
Я пытаюсь заполнить список (карусель) из базы данных, но не могу отобразить изображения. Каждый пример в сети предполагает, что у вас есть два или три файла в формате JPEG в папке, а не в памяти :(
Мой класс элемента:
public class PicCollection : ObservableCollection<CarouselItem>
{
public PicCollection()
{
}
}
public class CarouselItem
{
public int ItemID { get; set; }
public string ItemName { get; set; }
public string ItemDesc { get; set; }
public Image ItemImage { get; set; }
public CarouselItem(int NewItemID, string NewItemName, string NewItemDesc, Image newItemImage)
{
this.ItemID = NewItemID;
this.ItemName = NewItemName;
this.ItemDesc = NewItemDesc;
this.ItemImage = newItemImage;
}
}
Я успешно заполняю PicCollection из базы данных (используя массив байтов для изображения) и пытаюсь отобразить имя и изображение с помощью
<DataTemplate x:Key="TestDataTemplate2" >
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="CarName"
Text="{Binding ItemName}"
Padding="15,15"
Foreground="Yellow" />
<Image Source="{Binding Source=ItemImage}"
Stretch="Fill" />
</StackPanel>
</DataTemplate>
Список просто:
<ListBox Name="lstTest" ItemsSource="{StaticResource TestDataSource}"
ItemTemplate="{StaticResource TestDataTemplate2}"></ListBox>
ItemName отображается нормально, ItemImage — нет. Я тоже пробовал {Binding ItemImage}
. В большинстве примеров используется {Binding Path=ItemImage}
, но здесь ItemImage будет строкой, содержащей путь, а не само изображение.
Я выдергиваю волосы. Ничто из того, что я делаю, не заставляет изображения появляться. Однако, если я создаю элемент управления изображением и вручную назначаю содержимое ItemImage, он отображается нормально. Что я делаю неправильно?