我在 stackoverflow 和 MSDN 中搜索了很长时间,我不确定为什么标记的答案对其他人有效,但对我无效。
我有这样的城市课
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public static List<City> GetDefaultCities()
{
List<City> cities = new List<City>();
cities.Add(new City { Id = 1, Name = "New York" });
cities.Add(new City { Id = 2, Name = "Chicago" });
cities.Add(new City { Id = 3, Name = "Miami" });
cities.Add(new City { Id = 4, Name = "Houston" });
cities.Add(new City { Id = 5, Name = "Dallas" });
return cities;
}
}
我的 ViewModel 中的属性:
private List<City> cities;
public List<City> Cities
{
get { return City.GetDefaultCities(); }
set { cities = value; }
}
private City selectedCity;
public City SelectedCity
{
get { return selectedCity; }
set
{
if (selectedCity != value)
{
selectedCity = value;
RaisePropertyChanged("SelectedCity");
}
}
}
我的视图中的 XAML
<ComboBox ItemsSource="{Binding Cities}" Width="100" Height="30"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedItem="{Binding SelectedCity}"
/>
我尝试了 3 种解决方案: 1. 在 XAML 中将 SelectedIndex 设置为 0;2.将Text Property设置为XAML中Cities Name的第一个元素;3.在ViewModel中为City属性设置一个默认值;
但是它们都不起作用,第一个元素总是空的。有人可以帮忙吗?