您的位置:首页 > 编程语言

Combobox绑定的一段代码

2010-10-12 17:55 225 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
using System.Windows.Data;

namespace Play
{
public partial class Page : UserControl
{
people p = new people { cityid = 2, name = "Jim" };

public Page()
{
InitializeComponent();

ObservableCollection<city> citys = new ObservableCollection<city>();
citys.Add(new city { id = 1, name = "北京" });
citys.Add(new city { id = 2, name = "福建" });
citys.Add(new city { id = 3, name = "山西" });
citys.Add(new city { id = 4, name = "广东" });

this.comboBox1.ItemsSource = citys;
this.comboBox1.DisplayMemberPath = "name";
this.comboBox1.UpdateLayout();
this.comboBox1.SelectedIndex = -1;

Binding bind = new Binding("cityid");
bind.Mode = BindingMode.TwoWay;
bind.Converter = new CityidConverter(citys);
this.comboBox1.SetBinding(ComboBox.SelectedItemProperty, bind);
this.comboBox1.DataContext = p;
}

private void button1_Click(object sender, RoutedEventArgs e)
{
this.textBox1.Text = p.ToString();
}

}

public class city : INotifyPropertyChanged
{
int _id;
string _name;

public int id { get{return _id;}
set
{
if (value != _id)
{
_id = value;
RaisePropertyChanged("id");
}
}
}
public string name { get { return _name; }
set
{
if (value != _name)
{
_name = value;
RaisePropertyChanged("name");
}
}
}

protected void RaisePropertyChanged(string propertyName)
{
if ((PropertyChanged != null))
{
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}

public event PropertyChangedEventHandler PropertyChanged;
}

public class people : INotifyPropertyChanged
{
string _name;
int _cityid;

public string name
{
get { return _name; }
set
{
if (value != _name)
{
_name = value;
RaisePropertyChanged("name");
}
}
}
public int cityid
{
get { return _cityid; }
set
{
if (value != _cityid)
{
_cityid = value;
RaisePropertyChanged("cityid");
}
}
}

public city city { get; set; }

public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
if ((PropertyChanged != null))
{
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}

public override string ToString()
{
return "cityid=" + cityid + " " + "name=" + name;
}
}

public class CityidConverter : IValueConverter
{
ObservableCollection<city> Citys;
public CityidConverter(ObservableCollection<city> citys)
{
Citys = citys;
}

#region IValueConverter Members

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int cityid = (int)value;

//LINQ貌似很方便
return Citys.Where(c => cityid == c.id).First();

//var list = from city in Citys
// where city.id == cityid
// select city;

//foreach (var city in list)
//{
// return city;
//}

//foreach (var city in Citys)
//{
// if (city.id == cityid)
// {
// return city;
// }
//}
//return null;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
city c = value as city;
return c.id;
}

#endregion
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: