包含在List中的另一个Object中的Object的WPF Binding属性

时间:2015-12-28 01:08:45

标签: wpf mvvm

我有一个ListBox显示有关汽车的一些信息。所以,我有ViewModel:

private ObservableCollection<Car> _cars;
public ObservableCollection<Car> CarsList
{
    get
    {
        return _cars;
    }
    set
    {
        _cars= value;
        OnPropertyChanged("CarsList");
    }
}

我已经实施了PropertyChanged,我得到了我的汽车列表就好了。我从我的ViewModel(而不是Window)加载我的CarsList。

我的Car对象有Name,Country,Url和Image对象,如下所示:

public class Car
{
    public string Name { get; set; }
    public string Country { get; set; }
    public Image Image { get; set; }
}

public class Image
{
    public string Url { get; set; }
}

我需要将Name,Country和Image.Url绑定到ListBox中的文本框。我这样做了:

<ListBox Name="lbEvents" ItemsSource="{Binding Path=CarsList}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <StackPanel>
                    <TextBlock Name="txtCarName" Text="{Binding Path=Name}" />
                    <TextBlock Name="txtCarCountry" Text="{Binding Path=Country}"/>
<!-- How do I bind this properly? -->
                    <Image Name="imgCarImage" Source="{Binding Path=Car.Image.Url}" />
                </StackPanel>
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

问题是我的车名和国家/地区在每个车的ListBox中都正确显示。但Car.Image.Url什么都没显示。我是WPF的新手,如何将Image.Url正确绑定到ImageBox?

1 个答案:

答案 0 :(得分:1)

正如NameCountryCar类的属性一样,Image也是如此。看看你绑定到NameCountry的方式,你没有将其指定为Car.Name,那么为什么要Image呢?只需Image代替Car.Image