在我的WPF项目中,有一个列表框,我必须在其中显示图像,并在每个图像旁边显示文本(例如:拍摄照片的日期,位置等)。 我尝试过创建一个通用列表,但我仍然无法将其分配给列表框
像
这样的东西特别是我一直在尝试这方面的事情。
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 :(得分:1)
Image元素支持Uris for Source属性。为什么不让你的LoadImages类返回一组Uris而不是图像? image元素也可以为你做异步工作;)
答案 1 :(得分:0)
thumbnail和mediaid不公开,因此绑定失败。
答案 2 :(得分:0)
经过大量的阅读和谷歌搜索,我找到了答案,我在ImageLoader类中所做的就是为mediaid和thumbnail创建属性,然后绑定到列表框现在就像char一样。因此,上面问题中提到的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;
}
}