我如何正确绑定到Windows Phone 8.1上的一个combox我尝试了我通常在winforms中做的但是它没有用。此外,对于设置页面,他们的任何标准做法都是为8.1 Phone Store应用程序创建设置页面,就像Silverlight一样。
在你问是的之前,数据是他们的好处已经存在。
public class City
{
public string id { get; set; }
public string timing_title { get; set; }
}
public class CitysList
{
public List<City> cityList { get; set; }
}
我认为DisplayMmember路径在从项目源
设置时会起作用<ComboBox x:Name="cboCitys" ItemsSource="{Binding}" DisplayMemberPath="{Binding timing_title}" HorizontalAlignment="Left" Margin="18,73,0,0" VerticalAlignment="Top" Width="343" Height="51">
</ComboBox>
我如何使用数据
popcornpk_Dal _dal = new popcornpk_Dal();
CitysList _mycities = await _dal.GetCityListAsync();
cboCitys.ItemsSource = _mycities.cityList;
答案 0 :(得分:1)
DisplayMemberPath
用于指定显示属性的路径,不需要绑定它
DisplayMemberPath="timing_title"
除此之外,如果您将combobox
的{{1}}绑定到Collection属性,并在itemSource
类中实现INotifyPropertyChanged
,那就更优雅了所以:
CitysList
的Xaml
public class CitysList:INotifyPropertyChanged
{
private ObservableCollection<City> _citylist ;
public ObservableCollection<City> CityList
{
get
{
return _citylist;
}
set
{
if (_citylist == value)
{
return;
}
_citylist = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
并且不要忘记将<ComboBox ItemsSource="{Binding CitysList}" DisplayMemberPath="timing_title" />
设置为包含集合的类的实例,并更新List只是重新实现它
DataContext
<强>更新强>
设置CityList = new ObservableCollection<City>(await _dal.GetCityListAsync());
,
首先在代码隐藏中创建dataContext
属性
CityList
第二次,使用
将页面 private CitysList _cityList ;
public CitysList CityList
{
get
{
return _cityList;
}
set
{
if (_cityList == value)
{
return;
}
_cityList = value;
OnPropertyChanged();
}
}
设置为代码隐藏
DataContext
或使用
从Xamlthis.DataContext=this; //in the main constructor
DataContext="{Binding RelativeSource={RelativeSource Self}}"
会自动继承页面Combobox
第三次绑定到您的收藏
DataContext
PS:您可以考虑直接在代码隐藏中添加<ComboBox x:Name="cboCitys" ItemsSource="{Binding CityList.CityList}" DisplayMemberPath="timing_title" HorizontalAlignment="Left" Margin="18,73,0,0" VerticalAlignment="Top" Width="343" Height="51">
集合,不需要添加一个类来保存该集合!