2 Stimmen

WPF Combox.FindName() funktioniert nicht

Ich habe zwei Comboboxen. Die Elemente der ersten fülle ich in Xaml mit:

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

und die Funktion ddl_pageType.FindName("Website"); funktioniert.

Die zweite Combobox fülle ich mit:

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

wobei proglist eine Liste ist. Hier funktioniert die Funktion ddl_cniProg.FindName(string) nicht.

Was muss ich tun, um einen Gegenstand von dd_cniprog zu erhalten?

1voto

rdeetz Punkte 1526

FrameworkElement.FindName sucht nach untergeordneten Elementen über die Name Attribut. ( http://msdn.microsoft.com/en-us/library/system.Windows.frameworkelement.findname.aspx ) Es sei denn, die ComboBoxItems, die Sie aus der databound-Liste generieren, haben das Attribut Name gesetzt (wonach es in dem kleinen Codeschnipsel nicht aussieht), dann wird die Funktion sie nicht finden.

Um das gesuchte Element zu finden, verwenden Sie FindName müssen Sie die Option Name Attribut für jedes Element, entweder über Datenbindung oder programmatisch.

0voto

Thomas Levesque Punkte 277723

Da Sie keinen Namen für die Elemente in der Datenverbindung angeben ComboBox können Sie nicht verwenden FindName ...

Wenn Sie die ComboBoxItem für ein bestimmtes Datenelement, können Sie die ItemContainerGenerator :

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X