В показанном коде есть несколько проблем.Некоторые могут просто отсутствовать в вашем примере:
Во-первых, ваша привязка к конвертеру не указывает , к чему привязываться, чтобы получить ее значение, поэтому она никогда не вызывается.Как минимум, ему нужен Path = (или просто имя свойства в качестве ярлыка), иначе конвертер не будет вызван.Где вы устанавливаете ItemSource вашего списка?
Во-вторых, передаваемые значения являются именами строковых файлов.Ваш конвертер должен использовать их в качестве имен файлов и открыть поток на основе этого имени.В настоящее время он пытается использовать имена в качестве байтовых массивов.
Наконец, если изображения являются фиксированным набором, было бы более целесообразно хранить их в папке изображений в ClientBin и просто ссылаться на них с помощьюследующий синтаксис пути "/images/imagename.jpg" и т. д. Это будет включать автоматическое кэширование браузера.Вам не нужен конвертер для этого.(Ключ является ведущим «/». Без этого Silverlight предполагает, что изображения находятся в текущем модуле)
Ниже приведен полный пример с использованием изображений, показанных в ClientBinПапка / images, которая при запуске выглядит следующим образом:
Пример файла Xaml:
<UserControl x:Class="SilverlightApplication1.IsoImages"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ImageApp_Converter="clr-namespace:SilverlightApplication1" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="ImageList">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="AliceBlue">
<Image HorizontalAlignment="Left" Margin="8,8,0,4" Width="160" Height="120" Source="{Binding Path=Filename}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</UserControl>
Пример кода:
using System.Collections.Generic;
using System.Windows.Controls;
namespace SilverlightApplication1
{
public partial class IsoImages : UserControl
{
public IsoImages()
{
InitializeComponent();
List<ImageItem> images = new List<ImageItem>()
{
new ImageItem("/images/Image1.jpg"),
new ImageItem("/images/Image2.jpg"),
new ImageItem("/images/Image3.jpg"),
new ImageItem("/images/Image4.jpg")
};
this.ImageList.ItemsSource = images;
}
}
public class ImageItem
{
public string Filename{ get; set; }
public ImageItem( string filename )
{
Filename = filename;
}
}
}