WPF MVVM:绑定到对象的 属性

WPF MVVM: Binding to property of object

我尝试使用绑定在我的 ComboBox 中显示值。但我不知道为什么它不起作用:

<ComboBox Width="476" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,10,0,0" ItemsSource="{Binding Maps.Name}"></ComboBox>

这是我的 C#:

public class Map
{
    public string Name { get; set; }
    public string ImagePath { get; set; }
}

和主要的:

class MainWindowViewModel : BindableBase
{
    public ObservableCollection<Map> Maps { get; set; }

    public MainWindowViewModel()
    {
        Maps = mainWindowModel.LoadMapFiles(); //deserializes maps, i checked it, LoadMapFiles() works
    }
}

ComboBox ItemSource如果要每隔Map.Name显示应该怎么写?

表达式 Maps.Name 不是有效的绑定路径,因为 Name 不是 MapsObservableCollection<Map> 的 属性。

ItemsSource属性绑定到集合属性,设置显示属性为DisplayMemberPath:

<ComboBox ItemsSource="{Binding Maps}" DisplayMemberPath="Name" ... />

还要确保 Maps 属性 setter 触发更改通知,或者将 属性 设置为只读:

public ObservableCollection<Map> Maps { get; }