2009-05-20 6 views
0

J'ai deux modèles de vue. Un qui affiche une collection d'IPAddresses, et un qui affiche une collection d'objets qui a de nombreux paramètres. L'un de ces paramètres est une adresse IP. Donc, j'ai un autre panneau qui se lie aux propriétés du second objet. Je voudrais qu'un combobox ait l'élément ItemSource défini sur le premier objet, mais l'élément sélectionné lié au deuxième objet. Cependant, je peux seulement sembler mettre un datacontext sur un contrôle dans le code derrière. Y at-il un moyen de contourner cela? Je préférerais faire tout cela dans le code si possible (je trouve la programmation de xaml non idéale au mieux), mais je prendrai n'importe quoi.(WPF) Liaison de deux classes à une commande

Répondre

0

Il serait plus facile de répondre si j'avais une meilleure description de vos objets, y compris les noms. Mais il me semble que vous devriez faire un dictionnaire avec l'ipaddress comme clé et le deuxième objet comme valeur.

Si vous pouvez le faire, vous pouvez lier à elle dans le code comme ceci:

comboBox.ItemsSource = dictionary; 
comboBox.DisplayMemberPath = "Key"; 
comboBox.SelectedValuePath = "Value"; 

Cela suppose que vous avez exactement un « second objet » pour chaque IPAddress dans la collection. Ce qui sonne à propos de votre description.

1

Pour la zone de liste déroulante, liez la collection d'adresses IP à la propriété ItemsSource et liez l'élément SelectedItem de la zone de liste à la propriété IPAddress de SelectedItem de la collection de «nombreux objets de propriété».

0

Jetez un oeil à la Source property de liaisons. Il s'agit essentiellement d'un DataContext pour une liaison spécifique. Cela devrait rendre ce que vous essayez de faire très simple, surtout dans le code derrière.