rudeboy
rudeboy

Reputation: 63

Dynamically change the DisplayMemberPath of a ComboBox?

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

Answers (1)

Lynn Crumbling
Lynn Crumbling

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

Related Questions