2016-11-23 9 views
0

sagen, dass ich eine ComboBox mit einer Liste von einfachen Mitarbeiter Objekte füllen wollen ...Ändern Sie den DisplayMemberPath einer ComboBox dynamisch?

public class Employee 
{ 
    private int ID { get; set; } 
    public string Name { get; set; } 
    public string Department { get; set; } 
    public string Project { get; set; } 

} 

und dann diese Liste durch XAML wie diese binden ...

  <ComboBox ItemsSource="{Binding EmployeeList}" 
         SelectedValue="{Binding SelectedEmployee}" 
         DisplayMemberPath="Project"/> 

Jetzt kann ich diese verwenden ComboBox zum Suchen und Auswählen von Mitarbeiterdatensätzen nach Projekt. Aber wenn einem Mitarbeiter derzeit kein Projekt zugeordnet ist, möchte ich auch die Möglichkeit haben, Datensätze (mit derselben ComboBox und Bindungen) nach Name oder Abteilung zu suchen, wenn ich dies wähle. Irgendwelche Ideen, wie ich etwas implementieren könnte, das Änderungen am DisplayMemberPath-Wert wie oben beschrieben vornehmen wird?

Antwort

0

DisplayMemberPath ist nur a string property. Binde dich in deinem Viewmodel darauf ein.

<ComboBox ... 
    DisplayMemberPath="{Binding DispMemberPath}" 
/> 

Ansichtsmodell ...

private string _DispMemberPath; 
public string DispMemberPath 
{ 
    get {return _DispMemberPath; } 
    set { _DispMemberPath= value; RaiseNotifyPropertyChanged(); } 
} 

private void SetDepartmentAsPath() 
{ 
    this.DispMemberPath = "Department"; 
} 
Verwandte Themen