显示超链接源的图像

时间:2013-10-01 20:58:18

标签: wpf xaml mvvm

我有一个使用MVVM的应用程序。

我在以下超链接http://b-i.forbesimg.com/spleverage/files/2013/04/silver-apple-logo-apple-picture.jpg上有一个图像,我希望将其作为源列在我的列表框中。

在我的listbox datatemplate中查看下面我绑定图像源(这是一个超链接),如下所示。我希望在列表框中看到图像,但是没有加载任何内容。我错过了什么?

<DataTemplate x:Key="UserDataTemplate">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <Grid Grid.Column="0">
                <Image Source="{Binding Image}"></Image>
            </Grid>

            <Grid Grid.Column="1">
                <TextBlock Text="{Binding Name}"/>
            </Grid>
        </Grid>
    </DataTemplate>

enter image description here

{Binding Image}中传递的值为“http://b-i.forbesimg.com/spleverage/files/2013/04/silver-apple-logo-apple-picture.jpg”。知道为什么图像不会加载吗?

1 个答案:

答案 0 :(得分:1)

我做了一个快速测试,图片非常大,有可能存在,但是因为Grid的{​​{1}}大小没有限制,只显示全尺寸图像你可以看到这一切,只是一个空角。

使用DataTemplate我添加了DataTemplete并显示确定。

TestCode:

代码:

MaxHeight

的Xaml:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent(); 
        Items.Add(new Item{Name = "Stack", Image = "http://b-i.forbesimg.com/spleverage/files/2013/04/silver-apple-logo-apple-picture.jpg"});
        Items.Add(new Item { Name = "Overflow", Image = "http://b-i.forbesimg.com/spleverage/files/2013/04/silver-apple-logo-apple-picture.jpg" });
    }

    private ObservableCollection<Item> _items = new ObservableCollection<Item>();
    public ObservableCollection<Item> Items
    {
        get { return _items; }
        set { _items = value; }
    }
}

public class Item
{
    public string Image { get; set; }
    public string Name { get; set; }
}

结果:

enter image description here