Findname für mich kaputt ist :(WPF - Findname Gibt null zurück, wenn es nicht
Wenn Sie ein Experte in solchen Dingen sind, würde ich etwas Hilfe lieben
Das Objekt Ich suche da ist.. ich habe Beweise
Hier ist das Szenario:.
ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");
popup
null ist aber nicht immer einfach manchmal aber auch, wenn es gesetzt ist, das Kind auf null ich bin looki.. ng für ist da.
Ich legte einen Punkt in, wenn es Null war und griff diese zwei Screenshots.
Das ist, wo Findname null für "popSelectIteration" kehrt zurück:
alt text http://img175.imageshack.us/img175/2055/popupisnull.png
Aber wenn man in die Uhr graben, sehen Sie, dass das Kind gibt es:
alt text http://img708.imageshack.us/img708/8757/watchwithpopupnull.png
Also was fehlt mir? Warum findet FindName es nicht? Wie Sie aus dem Screenshot sehen können, ist dies kein Timing-Problem (die FindName-Uhr ist null, aber der direkte Pfad ist in Ordnung).
Gibt es eine bessere Möglichkeit, ein Steuerelement zu finden?
Seitennotiz: Wenn Sie im XAML für den betreffenden Umschaltknopf interessiert sind, finden Sie in dieser Frage: WPF - FrameworkElement - Enumerate all decendents?.
aktualisieren: Ich habe einige zu sehen, graben, warum dies einige Male und zu anderen Zeiten nicht funktioniert. Ich habe eine Animation, die NameScope.SetNameScope((DependencyObject)form, new NameScope());
aufruft (Vollständige Methode Code here). Gleich nach diesem Aufruf beginnt der FindName fehlzuschlagen.
Ich verstehe diesen Anruf wirklich nicht. Ich glaube, ich habe den Code kopiert und eingefügt. Wie auch immer, ich habe es auskommentiert. Aber ich würde gerne wissen, warum das scheitert.
Arbeitete für mich. War dieses Problem mit Template.FindName() – Trap
Dies funktionierte für mich, es war ein Problem mehr für Steuerelemente, die ursprünglich oder auf einer Registerkarte ausgeblendet wurden, die ursprünglich nicht sichtbar war. – Dave
Ich hatte ein Problem mit GetTemplateChild ("PART_EditableTextBox") mit einer ComboBox. Durch den Aufruf von ApplyTemplate() wurde das Problem behoben. Vielen Dank! –