Pregunta

¿Alguien puede señalarme un buen recurso (o darme una pista) para mostrarme cómo hacer enlace de datos a controles (ComboBox, ListBox, etc.) en WPF?Estoy un poco perdido cuando me quitan todas las sutilezas de WinForms, y para empezar no soy tan brillante...

¿Fue útil?

Solución

Encuentro los videos tutoriales en Cliente Windows .Net igualmente impresionante. Dot Net rockea la televisión También lo cubrió hace algún tiempo.

Otros consejos

El mejor recurso que he encontrado para el enlace de datos de WPF es El blog de Bea Costa..Comience desde la primera publicación y siga leyendo.Es impresionante.

en el código subyacente: establezca el DataContext de su cuadro de lista igual a la colección a la que está vinculando.

private void OnInit(object sender, EventArgs e)
{
  //myDataSet is some IEnumerable 

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

En XAML, Listbox puede declarar a qué propiedades se vincula mediante la sintaxis "Binding".

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>

Y algunos enlaces más, por si lo anterior no fuera suficiente:

Windows Presentation Foundation: temas prácticos sobre enlace de datos
- Aproximadamente 30 artículos de "procedimientos" de MSDN.
"Los temas de esta sección describen cómo utilizar el enlace de datos para vincular elementos a datos de una variedad de fuentes de datos en forma de objetos de Common Language Runtime (CLR) y XML."

Avanzando hacia el enlace de datos de WPF paso a paso
- Por el gurú de WPF José Smith
"Este artículo explica los conceptos básicos absolutos del enlace de datos de WPF.Muestra cuatro formas diferentes de realizar la misma tarea sencilla.Cada iteración se acerca a la implementación más compacta posible solo de XAML.Este artículo está dirigido a personas sin experiencia en el enlace de datos de WPF".

Aquí hay otro buen recurso de MSDN: Descripción general del enlace de datos.

Hay tres cosas que debes hacer:

  1. Vincule ItemsSource del ComboBox a la lista de opciones.
  2. Vincula SelectedItem a la propiedad que contiene la selección.
  3. Establezca ComboBox.ItemTemplate en DataTemplate para un ComboBoxItem.

Entonces, por ejemplo, si su objeto de contexto de datos es una persona que tiene direcciones de correo electrónico y desea elegir su dirección principal, es posible que tenga clases con estas firmas:

public class EmailAddress
{
    public string AddressAsString { get; set; }
}

public class Person
{
    public IEnumerable<EmailAddress> EmailAddresses { get; }
    public EmailAddress MainEmailAddress { get; set; }
}

Entonces podrías crear el cuadro combinado como este:

<ComboBox ItemsSource="{Binding EmailAddresses}" SelectedItem="{Binding MainEmailAddress}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding AddressAsString}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Ahora necesita implementar INotifyPropertyChanged tanto en Persona como en Dirección de correo electrónico.Para la colección EmailAddresses, puede respaldarla con una ObjservableCollection.

O como alternativa puedes usar Actualizar controles .NET.Este es un proyecto de código abierto que reemplaza el enlace de datos y no requiere INotifyPropertyChanged.Puede utilizar cualquier colección que tenga sentido para respaldar la propiedad EmailAddresses.El XAML funciona igual que el anterior, excepto que importa el espacio de nombres UpdateControls.XAML y reemplaza {Binding...} con {u:Update...}.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top