/// <summary> /// 选择市事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmbCity_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!this.needChange) { return; } if (cmbCity.SelectedIndex > 0) { int citySysNumber = System.Convert.ToInt32(cmbCity.SelectedValue); this.SelectedCitySysNo = citySysNumber.ToString(); Facade.QueryCurrentAreaStructure_Old(citySysNumber, (obj, args) => { if (args.FaultsHandle()) { return; } this.needChange = false; ViewModel = AreaQueryTransform.Transform_Old(args.Result); cmbArea.ItemsSource = ViewModel.DistrictAreaList; this.SelectedCityName = ViewModel.CityeAreaList.Where(f => f.Key == citySysNumber.ToString()).FirstOrDefault().Value; this.needChange = true; ClearValidationError(cmbArea); }); } else { this.needChange = false; cmbArea.ItemsSource = SingleSource; cmbArea.SelectedIndex = 0; this.needChange = true; } }
/// <summary> /// 绑定数据 /// </summary> private void BindData() { string query = string.IsNullOrEmpty(this.SelectedAreaSysNo) ? "-999" : this.SelectedAreaSysNo; //MessageBox.Show("第一步" + this.SelectedAreaSysNo ?? ""); if (query == "-999" && GetParentObject <UserControl>(this, "ucContactInfo") != null) { return; } Facade.QueryCurrentAreaStructure_Old(System.Convert.ToInt32(query), (obj, args) => { //MessageBox.Show("第二步" + this.SelectedAreaSysNo ?? ""); if (args.FaultsHandle()) { return; } ViewModel = AreaQueryTransform.Transform_Old(args.Result); string areaSysNo = null; if (!string.IsNullOrEmpty(this.SelectedAreaSysNo)) //if (ViewModel.CurrentArea.SysNo.HasValue) { areaSysNo = this.SelectedAreaSysNo; //areaSysNo = ViewModel.CurrentArea.SysNo.ToString(); } this.needChange = false; cmbProvince.ItemsSource = ViewModel.ProvinceAreaList; cmbCity.ItemsSource = ViewModel.CityeAreaList; //在给ComboBox的数据源赋值后,会触发SelectionChanged时间,导致SelectedAreaSysNo为null,所以需要把SelectedAreaSysNo先存起来 cmbArea.ItemsSource = ViewModel.DistrictAreaList; //MessageBox.Show("第三步" + ViewModel.ProvinceAreaList.Count.ToString() + "," + ViewModel.CityeAreaList.Count.ToString() + "," + ViewModel.DistrictAreaList.Count.ToString()); this.needChange = true; if (!string.IsNullOrEmpty(areaSysNo)) { //MessageBox.Show("第四步" + areaSysNo); this.SelectedAreaSysNo = areaSysNo; } if (string.IsNullOrEmpty(this.SelectedAreaSysNo)) { cmbProvince.SelectedIndex = 0; } else { this.needChange = false; //MessageBox.Show("第五步" + ViewModel.CurrentArea.ProvinceSysNumber + "," + ViewModel.CurrentArea.CitySysNumber + "," + ViewModel.CurrentArea.SysNumber); cmbProvince.SelectedValue = ViewModel.CurrentArea.ProvinceSysNumber; cmbCity.SelectedValue = ViewModel.CurrentArea.CitySysNumber; if (ViewModel.CurrentArea.DistrictName != null) { cmbArea.SelectedValue = ViewModel.CurrentArea.SysNumber; } else { cmbArea.SelectedIndex = 0; } this.needChange = true; } }); }