2011-02-07 2 views
0

Doit-il être possible de lier une zone de liste déroulante WPF à une classe. J'ai une classe qui implémente IEmunerable et IEnumerator et contient une liste d'objets, comme suit:WPF ComboBox Databound à une classe

class MyClass 
{ 
    public string Title { get; set; } 
    public string Directory { get; set; } 

    public MyClass(string title, string directory) 
    { 
     Title = title; 
     Directory = directory; 
    } 
} 

class MyClasses : IEnumerable, IEnumerator 
{ 
    private List<MyClass> allClasses; 
    private int position = 0; 

    public List<MyClass> GetClasses() 
    { 
     allClasses = new List<MyClass>() 
     { 
      new MyClass("example1", "dir1"), 
      new MyClass("example2", "dir2") 
     }; 

     return allClasses; 
    } 


    public IEnumerator GetEnumerator() 
    { 
     return (IEnumerator) this; 
    } 

    public object Current 
    { 
     get 
     { 
      return allClasses[position]; 
     } 
    } 

    public bool MoveNext() 
    { 
     position++; 
     return (position < allClasses.Count());    
    } 

    public void Reset() 
    { 
     position = -1; 
    } 
} 

Alors maintenant, je veux lier à un combobox WPF. Voici ce que j'ai, ce qui ne fonctionne pas (je place obtenir une liste des noms de type des objets):

 allClasses.GetClasses(); 

     cboTest.ItemsSource = allClasses; 
     cboTitle.SelectedValue = "Title"; 

Quelqu'un peut-il me dire comment mettre en œuvre cette liaison?

Répondre

2
cboTitle.SelectedValue = "Title"; 

devrait être

cboTitle.DisplayMemberPath = "Title"; 
1

changement

cboTitle.SelectedValue = "Titre";

à

cboTitle.DisplayMemberPath = "Titre";