组合框绑定话机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;

组合框绑定话机8.1 UAP

DisplayMemberPath用于指定显示属性的路径,您不需要绑定它

DisplayMemberPath="timing_title"

除此之外,如果您将comboboxitemSource绑定到集合属性,并在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集合,因为没有必要添加一个类来保存该集合!