2010-06-07 8 views
0

(Pour cet exemple) ListBox l est lié à CustomObjectCollection c.Liaison de données WPF avec le constructeur

Est-ce que j'appelle le constructeur de c?

Que se passe-t-il si c est un objet générique?

**In XAML (1)**
<ListBox Content={Binding CustomObjectCollection}/>

**In Codebehind**
CustomObjectCollection<MyClass> c;
**In XAML (2)**
<ListBox Content={Binding CustomObjectCollection}/>

On suppose dans c, je remplir la collection (de manière dynamique, en utilisant le constructeur)
laquelle la liaison appellerait le constructeur?

Désolé, ce n'est pas clair, je n'ai aucune idée de comment l'expliquer.

+1

Cette question est pas très claire. Qu'est-ce que vous essayez d'accomplir? Pouvez-vous poster votre code XAML/code-behind? – Charlie

Répondre

1

Vous devez vous lier à une propriété. Si l'objet source doit être construit, alors il doit être fait dans le code derrière.

<ListBox ItemsSource={Binding ListSource} /> 

//Codebehind 
class MyControl : UserControl { 
    public CustomObjectCollection ListSource {get; private set;} 

    public MyControl() { 
     ListSource = new CustomObjectCollection (/*arguments*/); 
     InitializeComponent(); 
     DataContext = this; 
    } 
} 
1

Un couple de choses:

  1. Vous ne pouvez lier aux propriétés publiques. Il semble que vous ayez c déclaré en tant que variable membre, mais pas une propriété. Donc, cette liaison ne réussira pas. Il est impossible de lier en utilisant une propriété Content sur ListBox. Je pense que ce que vous essayez de faire est mieux accompli en utilisant la propriété ItemsSource. Découvrez l'exemple lié sur MSDN; Cela devrait vous aider à démarrer.