1

我想使用 Binding 将图像放入我的 ListBox 中。

下面是包含 URI 的对象:

_roomView.Room = new Room
        {
            Items = new List<Item> {
            new Item {ItemType = ItemType.BlueKey, ImageUri = "/Escape;component/Images/Items/a.jpg"},
            new Item {ItemType = ItemType.Bracelet, ImageUri = "/Escape;component/Images/Items/b.png"},
            new Item {ItemType = ItemType.Money, ImageUri = "/Escape;component/Images/Items/b.png"}}
        };
        DataContext = _roomView;

下面是 XML:

  <ListBox x:Name="Mylist">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="5">
                        <Image Source="{Binding Room.Items.ImageUri}" Stretch="None" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

图像不显示。

谁能看到我哪里出错了?

4

2 回答 2

4

如果图像未显示 - 检查路径;例如我的绑定代码

 public class Country
{       
    public String name
    {
        get;
        set;
    }       
    public String Flag
    {
        get
        {
            return "/Image/Countries/" + name + ".png";
        }
    }
}


<Image Width="100" Height="140" HorizontalAlignment="Left" Stretch="UniformToFill">
    <Image.Source>
       <BitmapImage UriSource="{Binding Flag}" CreateOptions="BackgroundCreation" />
    </Image.Source>
</Image>   

如果您使用项目中的图像,请确保构建到内容并始终复制到输出目录。(图像的属性)

顺便说一句,如果你想显示来自互联网的图像你需要使用 LowProfileImageLoader 你可以阅读更多关于它 http://blogs.msdn.com/b/delay/archive/2010/09/02/keep-a-low -profile-lowprofileimageloader-helps-the-windows-phone-7-ui-thread-stay-responsive-by-loading-images-in-the-background.aspx

 <Image  delay:LowProfileImageLoader.UriSource= "{Binding Flag}" HorizontalAlignment="Left" Stretch="Fill"   VerticalAlignment="Center" Width="24" Height="16" Margin="0,0,10,0"  />
于 2013-02-13T07:03:17.400 回答
0

而不是做

DataContext = _roomView;

我做了:

Mylist.ItemsSource = _roomView.Room.Items;

在 XML 中:

<Image Source="{Binding ImageUri}" Stretch="None" />

上面显示的是“ImageUri”而不是 Room.Items.ImageUri,因为我已经传入了 Rooom.Items。

于 2013-02-12T23:40:01.577 回答