2009-03-24 4 views
0

В моем проекте WPF есть список, в котором мне нужно отображать изображения и рядом с каждым изображением их текст (например: дата, когда была сделана фотография, местоположение и т. Д.). Я попытался создать общий список, но я до сих пор не могу назначить его ListBoxСоздать собственный общий список с bitmapimage

Что-то вроде

Bscially Я пытался что-то на этой линии.

public class LoadImages 
{ 
    public static List<ImageLoader> LoadImages() 
    { 
     List<ImageLoader> img = new List<ImageLoader>(); 

     Uri uri = new Uri(@"http://somedomain.com/pic.jpg", UriKind.Absolute); 
     BitmapImage bi = new BitmapImage(uri); 

     img.Add(new ImageLoader("1_1",bi)); 

     return img;    
    } 
} 

public class ImageLoader 
{ 
    string mediaid; 
    BitmapImage thumbnail; 

    public ImageLoader(string mediaid, BitmapImage b) 
    { 
     this.mediaid = mediaid; 
     this.thumbnail = b; 
    } 
} 

И мой XAML выглядит так.

 <ListBox Name="ListBox1" SelectionMode="Extended" ItemsSource="{Binding}" 
      Width="300" Height="300" IsSynchronizedWithCurrentItem="True"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Image Source="{Binding thumbnail}"/> 
        <TextBlock Text="{Binding mediaid}"/> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

За время время я поставил Window.DataContext

<Window.DataContext> 
    <ObjectDataProvider ObjectType="{x:Type local:LoadImages}" MethodName="LoadImages"/> 
</Window.DataContext> 

Но каждый раз, когда я запустить приложение в окне списка показывает вверх пустой.

Любые предложения.

ответ

0

После многого чтения и поиска в Интернете я нашел свой ответ, все, что мне нужно было сделать в классе ImageLoader, - создать свойства для mediaid и thumbnail, после чего привязка к списку теперь работает как символ. Таким образом, класс ImageLoader в спросил в вопросе выше теперь выглядит

public class ImageLoader 
{ 
    string mediaid; 
    BitmapImage thumbnail; 

    public string MediaId 
    { 
     get { return mediaid; } 
     set { mediaid = value; } 
    } 

    public BitmapImage Thumbnail 
    { 
     get { return thumbnail; } 
     set { thumbnail = value; } 
    } 

    public ImageLoader(string mediaid, BitmapImage b) 
    { 
     this.mediaid = mediaid; 
     this.thumbnail = b; 
    } 
} 
1

Элемент изображения поддерживает URIS для свойства Source. Почему бы не заставить ваш класс LoadImages возвращать набор Uris вместо изображений? Также элемент изображения может выполнить асинхронное задание для вас;)

+0

Спасибо Денис, пропускал очевидное :-) –

+0

Update: Я изменил свой класс и установить элемент изображения для привязки к строке, но изображению пока не появляется. Любые указатели. –

0

thumbnail и mediaid не являются общедоступными, и, следовательно, привязка не выполняется.

+0

Привет, Я попытался настроить его на публичный, но привязка не удалась. –