2009-12-21 14 views
2

J'ai deux comboboxes. Les éléments de la première je suis remplir Xaml avec:WPF Combox.FindName() ne fonctionne pas

<ComboBox Name="ddl_pageType" Width="200" BorderThickness="5"> 
       <ComboBoxItem Name="Website" Content="Webseite"/> 
       <ComboBoxItem Name="CNIProg" Content="Seite"/> 
</ComboBox> 

et la fonction ddl_pageType.FindName (« site Web »); travaux.

Le deuxième combobox je remplis avec:

ddl_cniProg.SetBinding(TextBlock.TextProperty, new Binding()); 
ddl_cniProg.ItemsSource = progList; 

où proglist est Liste. Ici, la fonction ddl_cniProg.FindName (string) ne fonctionne pas.

Que dois-je faire pour obtenir un article de dd_cniprog?

Répondre

1

FrameworkElement.FindName recherche les éléments enfants via l'attribut Name. (http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx) À moins que les ComboBoxItems que vous générez à partir de la liste de bases de données aient l'attribut Name défini (auquel il ne ressemble pas à partir de l'extrait de code), la fonction ne les trouve pas.

Pour trouver l'élément que vous recherchez en utilisant FindName, vous devez définir l'attribut Name pour chaque élément, par liaison de données ou par programmation.

0

Puisque vous ne spécifiez pas de nom pour les éléments de la databound ComboBox, vous ne pouvez pas utiliser FindName ...

Si vous voulez récupérer le ComboBoxItem pour un élément de données spécifique, vous pouvez utiliser la ItemContainerGenerator:

ComboBoxItem comboItem = ddl_cniProg.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem;