组合框绑定话机8.1 UAP
本文关键字:UAP 话机 绑定 组合 | 更新日期: 2023-09-27 18:09:39
如何正确绑定到windows phone 8.1上的combox我尝试了我通常会在winforms中做的事情,但它不起作用。此外,这是一个设置页面是他们的任何标准做法,但8.1手机商店应用程序创建设置页面的方式与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;
DisplayMemberPath
用于指定显示属性的路径,您不需要绑定它
DisplayMemberPath="timing_title"
除此之外,如果您将combobox
的itemSource
绑定到集合属性,并在CitysList
类中实现INotifyPropertyChanged
,则会更加优雅,如下所示:
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));
}
}
Xaml
<ComboBox ItemsSource="{Binding CitysList}" DisplayMemberPath="timing_title" />
,不要忘记将DataContext
设置为持有集合的类的实例,并且要更新List,只需重新实例化它
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
设置为代码后置this.DataContext=this; //in the main constructor
或从Xaml使用
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Combobox
将自动继承DataContext
页面
第三个绑定到你的集合
<ComboBox x:Name="cboCitys" ItemsSource="{Binding CityList.CityList}" DisplayMemberPath="timing_title" HorizontalAlignment="Left" Margin="18,73,0,0" VerticalAlignment="Top" Width="343" Height="51">
PS:您不妨考虑直接在代码中添加CityList
集合,因为没有必要添加一个类来保存该集合!