【发布时间】:2016-10-10 08:58:27
【问题描述】:
我需要通过从组合框中选择颜色并单击按钮来更新 ListBox 的 BackColor。这是我的代码
public Data _current;
public Data Current
{
get
{ return _current; }
set
{
_current = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Current"));
}
}
}
public Form1()
{
InitializeComponent();
Items = new ObservableCollection<Data>();
for (int i = 0; i < names.Count; i++)
{
Items.Add(new Data() {Name=names[i].ToString().TrimStart(new char[] { '[', 'C', 'o', 'l', 'o', 'r', ' ', ']' }).TrimEnd(new char[] { ']' }), color = names[i] });
}
comboBox1.DataSource = Items;
comboBox1.DisplayMember ="Name";
Current = Items.First();
}
public List<Color> names = new List<Color>() { Color.Red,Color.Yellow,Color.Green,Color.Blue };
public event PropertyChangedEventHandler PropertyChanged;
private void button1_Click(object sender, EventArgs e)
{
Current = comboBox1.SelectedItem as Data;
listBox1.DataBindings.Add("BackColor", Current, "color", true, DataSourceUpdateMode.OnPropertyChanged);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
public class Data:INotifyPropertyChanged
{
private Color _color;
public string name { get; set; }
public string Name
{
get
{ return name; }
set
{
name = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
public Color color
{
get
{
return _color;
}
set
{
_color = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("color"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
异常弹出并说:“这会导致集合中的两个绑定绑定到同一个属性。”
【问题讨论】:
-
如果您想使用
Click的Button事件更新ListBox的背景颜色,则不需要数据绑定来更新ListBox的背景颜色。