在WPF中,可以使用Binding来将ComboBox绑定到两个不同的值,并处理选择事件。以下是一个简单的示例:
XAML代码:
```xml
```
其中,Names和SelectedName是ViewModel中的属性,分别表示下拉列表中的选项和当前选中的选项。DisplayMemberPath和SelectedValuePath分别指定显示名称和实际值的属性。
在代码中,我们还为ComboBox的SelectionChanged事件添加了一个处理程序,以便在用户选择新选项时执行一些操作。
C#代码:
```csharp
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private List _names;
public List Names
{
get { return _names; }
set
{
_names = value;
OnPropertyChanged("Names");
}
}
private Name _selectedName;
public Name SelectedName
{
get { return _selectedName; }
set
{
_selectedName = value;
OnPropertyChanged("SelectedName");
}
}
public ViewModel()
{
Names = new List
{
new Name { Id = 1, Name = "John" },
new Name { Id = 2, Name = "Mary" },
new Name { Id = 3, Name = "Bob" }
};
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// 处理选择事件
}
}
public class Name
{
public int Id { get; set; }
public string Name { get; set; }
}
```
在ViewModel中,我们定义了Names和SelectedName属性,并在构造函数中初始化了下拉列表的选项。我们还实现了INotifyPropertyChanged接口,以便在属性更改时通知UI更新。
最后,在ComboBox_SelectionChanged方法中,我们可以处理用户选择新选项时要执行的操作。