AssociatedObject.FindName in Silverlight Verhalten OnAttached Methode gibt null zurück

StackOverflow https://stackoverflow.com/questions/2145924

  •  23-09-2019
  •  | 
  •  

Frage

Ich mache ein Silverlight-Verhalten ein Element von einem enthaltenen „Ziehgriff“ Elemente zu ermöglichen, ziehen (und nicht dem gesamten Element ziehbar sind). Denken Sie daran, wie eine Fenster-Titelleiste.

In der OnAttached Methode Ich rufe: AssociatedObject.FindName (Draghandle) aber dies ist die Rückkehr null.

Ich habe dann versucht, die Loaded-Ereignis der AssociatedObject Handhabung und meinen Code läuft dort, aber ich bekomme immer noch eine Null zurückgegeben.

Am I Missverständnis, was Findname der Lage ist zu tun? Die AssociatedObject ist in einem Itemscontrol (Ich will eine Sammlung von ziehbar Elementen). So ist es eine Art von Namescope Problem?

War es hilfreich?

Lösung

Ja, es klingt wie ein Namescope Problem. Die MSDN-Dokumentation auf XAML namescopes geht darüber, wie namesopes werden für Vorlagen und Artikel Kontrollen definiert. Verwenden Sie eine Vorlage für den Artikel im Item?

Sie können nur die visuelle Struktur rekursiv mit so etwas wie diese haben zu Fuß die richtige Element nach dem Namen zu finden:

    private static FrameworkElement FindChildByName(FrameworkElement parent, string name)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
        {
            FrameworkElement child = VisualTreeHelper.GetChild(parent, i) as FrameworkElement;

            if (child != null && child.Name == name)
            {
                return child;
            }
            else
            {
                FrameworkElement grandChild = FindChildByName(child, name);

                if (grandChild != null)
                {
                    return grandChild;
                }
            }
        }

        return null;
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top