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
不是 Maps
中 ObservableCollection<Map>
的 属性。
将ItemsSource
属性绑定到集合属性,设置显示属性为DisplayMemberPath
:
<ComboBox ItemsSource="{Binding Maps}" DisplayMemberPath="Name" ... />
还要确保 Maps
属性 setter 触发更改通知,或者将 属性 设置为只读:
public ObservableCollection<Map> Maps { get; }
我尝试使用绑定在我的 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
不是 Maps
中 ObservableCollection<Map>
的 属性。
将ItemsSource
属性绑定到集合属性,设置显示属性为DisplayMemberPath
:
<ComboBox ItemsSource="{Binding Maps}" DisplayMemberPath="Name" ... />
还要确保 Maps
属性 setter 触发更改通知,或者将 属性 设置为只读:
public ObservableCollection<Map> Maps { get; }