2008-08-11 10 views
11

¿Alguien me puede indicar un buen recurso (o arrojarme una pista) para mostrarme cómo hacer DataBinding a los controles (ComboBox, ListBox, etc.) en WPF? Estoy un poco perdido cuando me quitan todas las bondades de WinForms, y no soy tan brillante para empezar ...WPF Databinding

Respuesta

3

Encuentro los videos tutoriales en Windows Client .Net igualmente asombrosos. Dot Net Rocks TV también lo ha cubierto hace algún tiempo.

+0

estos enlaces parecen ser galimatías ahora (el enlace de cliente de Windows .NET ni siquiera resolver el DNS más) – Ortund

5

El mejor recurso que he encontrado para el enlace de datos WPF es Bea Costa's blog. Comience desde la primera publicación y lea hacia adelante. Es impresionante.

3

en el código subyacente: configure el DataContext de su cuadro de lista igual a la colección a la que se 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 une utilizando la sintaxis "Binding".

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

y algunos más enlaces, por si acaso lo anterior no fue suficiente:

Windows Presentation Foundation - Data Binding How-to Topics
- Aprox 30 'cómo' los artículos de MSDN.
"Los temas de esta sección describen cómo utilizar los datos de unión para unir elementos a los datos de una variedad de fuentes de datos en forma de objetos y XML (CLR) común tiempo de ejecución idioma."

Moving Toward WPF Data Binding One Step at a Time
- Por WPF gurú Josh Smith
"Este artículo explica los principios básicos del enlace de datos WPF. Muestra cuatro maneras diferentes de cómo realizar la misma tarea simple. Cada iteración se acerca a la implementación más compacta posible, solo XAML. Este artículo es para personas con ninguna experiencia en el enlace de datos de WPF ".

2

Hay tres cosas que hay que hacer:

  1. Enlace el ItemsSource del ComboBox a la lista de opciones.
  2. Enlaza el elemento seleccionado a la propiedad que contiene la selección.
  3. Establezca el ComboBox.ItemTemplate en un DataTemplate para un ComboBoxItem.

Así, por ejemplo, si el objeto de contexto de datos es una persona que tenga direcciones de correo electrónico, y que desea elegir su primaria, 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 se podría crear el cuadro combinado de esta manera:

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

Ahora tiene que aplicar INotifyPropertyChanged tanto en persona y EmailAddress. Para la colección EmailAddresses, puede respaldarlo con ObjservableCollection.

O como alternativa puede usar Update Controls .NET. Este es un proyecto de código abierto que reemplaza el enlace de datos y no requiere INotifyPropertyChanged.Usted puede usar cualquier colección tiene sentido para respaldar la propiedad EmailAddresses. El XAML funciona igual que el anterior, excepto que se importa el espacio de nombres UpdateControls.XAML y sustituir {...} La unión con {U: Actualización ...}.

Cuestiones relacionadas