【发布时间】:2013-12-18 10:49:59
【问题描述】:
我正在构建一个 WPF 应用程序,我的 UI 由组合框和大约十几个其他 UI 控件组成。我有一个包含十几个属性并实现 INotifyPropertyChanged 的业务对象类。
这是我的业务对象的 sn-p:
public class MyBusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private int _idNumber;
public int IdNumber
{
get { return _idNumber; }
set
{
if (_idNumber == value)
{
return;
}
_idNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("IdNumber"));
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name == value)
{
return;
}
_name = value;
OnPropertyChanged(new PropertyChangedEventArgs("Name"));
}
}
private int _age;
public int Age
{
get { return _age; }
set
{
if (_age == value)
{
return;
}
_age = value;
OnPropertyChanged(new PropertyChangedEventArgs("Age"));
}
}
private string _address;
public string Address
{
get { return _address; }
set
{
if (_address == value)
{
return;
}
_address = value;
OnPropertyChanged(new PropertyChangedEventArgs("Address"));
}
}
private bool _employed;
public bool Employed
{
get { return _employed; }
set
{
if (_employed == value)
{
return;
}
_employed = value;
OnPropertyChanged(new PropertyChangedEventArgs("Employed"));
}
}
public MyBusinessObject(int idNumber)
{
this.IdNumber = idNumber;
// set default values here
}
}
如您所料,各种 UI 控件将绑定到我的业务对象的属性。但是,我需要创建一个业务对象的数组或列表(其中 10 个是特定的)并将我的组合框绑定到 IdNumber 属性。所以我的用户将从组合框中选择他们想要的对象,然后其他 UI 控件应该更新以显示所选对象的每个绑定属性的值。
现在,我在后面的代码中声明了一个业务对象的实例,如下所示:
public partial class MainWindow : Window
{
// this will be replaced with an array/list of business objects
MyBusinessObject myObject = new MyBusinessObject(1234); // 1234 = IdNumber
public MainWindow()
{
InitializeComponent();
this.DataContext = myObject;
}
}
目前,我的组合框是这样定义的:
<ComboBox x:Name="selectedObjectComboBox" IsEditable="False"/>
一旦我实现了业务对象的数组/列表,谁能告诉我如何将组合框绑定到数组,以便显示每个对象的 IdNumber?另外,如果有的话,当用户更改组合框中的选择时,我需要做些什么来让其他绑定控件反映所选对象的值?
【问题讨论】:
标签: wpf data-binding combobox