Reputation: 63
Say I want to fill a ComboBox with a list of simple Employee objects...
public class Employee
{
private int ID { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public string Project { get; set; }
}
and then bind that list through XAML like this...
<ComboBox ItemsSource="{Binding EmployeeList}"
SelectedValue="{Binding SelectedEmployee}"
DisplayMemberPath="Project"/>
Now I can use this ComboBox to look up and select Employee records by Project. But if an Employee doesn't currently have a Project associated to them I would also like the ability to look up records (using the same ComboBox and bindings) by Name or Department if I so choose. Any ideas on how would I implement something that will make changes to the DisplayMemberPath value like I described above?
Upvotes: 0
Views: 1083
Reputation: 13357
DisplayMemberPath is just a string property. Bind to it in your viewmodel.
<ComboBox ...
DisplayMemberPath="{Binding DispMemberPath}"
/>
Viewmodel...
private string _DispMemberPath;
public string DispMemberPath
{
get {return _DispMemberPath; }
set { _DispMemberPath= value; RaiseNotifyPropertyChanged(); }
}
private void SetDepartmentAsPath()
{
this.DispMemberPath = "Department";
}
Upvotes: 1