Utilizando ItemsSource para llenar WPF ListBox - ¿Buena idea?
Soy un codificador (relativamente) experimentado de Cocoa / Objective-C, y me estoy enseñando C # y el marco WPF.
In Cocoa, al poblar unaNSTableView
, es relativamente simple asignar un delegado y una fuente de datos a la vista. Esos métodos de delegado / fuente de datos se utilizan para llenar la tabla y determinar su comportamiento.
Estoy armando una aplicación simple que tiene una lista de objetos, llamémoslosDog
objetos, que cada uno tiene unpublic string name
. Este es el valor de retorno deDog.ToString()
.
Los objetos se mostrarán en unaListBox
, y me gustaría llenar esta vista usando un patrón similar al @ de CocNSTableViewDataSource
. Actualmente parece estar funcionando usando:
public partial class MainWindow : Window, IEnumerable<Dog>
{
public Pound pound = new Pound();
public MainWindow()
{
InitializeComponent();
Dog fido = new Dog();
fido.name = "Fido";
pound.AddDog(fido);
listBox1.ItemsSource = this;
Dog spot = new Dog();
spot.name = "Spot";
pound.AddDog(spot);
}
public IEnumerator<Dog> GetEnumerator()
{
return currentContext.subjects.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Pero me pregunto cómocorrect esto es. Literalmente he instalado Visual Studio durante menos de una hora, por lo que es seguro decir que no tengo idea de lo que estoy haciendo.
¿Es este el patrón adecuado?Agregar el segundo elemento a la listaspot
) parece actualizar laListBox
correctamente, pero me pregunto qué desencadena las actualizaciones.Qué sucede si actualizo laPound
en un hilo de fondo? ¿Cómo puedo preguntar manualmente aListBox
para actualizarse? (¿Necesito siquiera hacerlo?)Un cambi que sé que necesito hacer es refactorizar laIEnumerable<Dog>
implementación en su propia clase, comoDogListItemsSource
, pero quiero asegurarme de tener un enfoque sólido antes de pulirlo.
Sentirse libr para señalar, en los comentarios, cualquier otro punto que deba abordar o tener en cuenta, grande o pequeño. Me gustaría aprender esto de la manera correcta, la primera vez.