组合盒绑定电话8.1 UAP

时间:2015-08-23 23:08:51

标签: c# xaml windows-phone-8.1

我如何正确绑定到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;

1 个答案:

答案 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

或使用

从Xaml
this.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"> 集合,不需要添加一个类来保存该集合!