2009-06-15 7 views
0

Ich versuche, ein HashSet an ein ListView-Objekt zu binden. Ich habe meinen Code hier dokumentiert:HashSet an ein ListView-Objekt binden (C#, WPF)

public class Person { 
    public string Name { get; set; } 
    public AddressList = new AddressList(); 
} 
public class AddressList : HashSet<Addresses> 
{ 
    // 
} 
public class Addresses { 
    public string Streetname { get; set; } 
    public string City { get; set; } 
} 
public class PersonViewModel : INotifyPropertyChanged { 
    private Person _person; 

    public PersonViewModel(Person person) 
    { 
     _person= person; 
    } 

    public string Name 
    { 
     get { return _person.Name; } 
     set 
     { 
      _person.Name = value; 
      OnPropertyChanged("Name"); 
     } 
    } 
    private void OnPropertyChanged(string property) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
     } 
    } 
} 

// This is how I add the DataContext: mainGrid.DataContext = _person //this is a PersonViewModel(); 
// This is how I bind the DataObjects to the GUI Elements: <TextBox Name="TxtBoxName" Text="{Binding Path=.Name, Mode=TwoWay}"/> 
// How can I add in the same way a HashSet to a ListView Element in the WPF Gui? I tried something like {Binding Path=.Name, Mode=TwoWay} 

Kann jemand mir mit Tipps helfen, wie man das erreicht? Danke vielmals!

Prost

+0

Auch wenn Sie einen IEqualityComparer für Ihre Addresses-Klasse hinzufügen (oder benötigen), würde ich vermeiden, HashSet anstelle einer einfacheren Sammlung zu verwenden, sagen Sie List . – micahtan

+0

Aber wäre HashSet nicht schneller? Ich brauche eigentlich keine spezielle HashSet-Funktion (außer dem "nice-to-have" -Einzeleintrag). –

Antwort

1

Um eine Sammlung zu einem ListView (oder einem ItemsControl, was das betrifft) zu binden, müssen Sie die ItemsSource Eigenschaft festlegen. Dies sollte an eine Instanz Ihrer AddressList-Klasse gebunden sein, vorausgesetzt, dass die Sammlung in Ihrer Liste angezeigt wird.

Sobald Sie das getan haben, müssen Sie die Bindungen für jede Spalte in ListView einrichten, ähnlich wie Ihr Kommentar am Ende des Beispielcodes beschreibt.

0

This example bindet an eine XML-Datenquelle, aber Sie sollten in der Lage sein, es an Ihre Bedürfnisse anzupassen. Weitere Informationen finden Sie in der MSDN-Dokumentation für ListView here.