Frage

Ich bin erfolgreich eine Datenvorlage in einem Code deklarieren hinter wie folgt:

    private static DataTemplate CreateTemplate(string sortMemberPath, HorizontalAlignment horzAlignment)
    {
        const string xamlFormat
            =
            "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" >"
            + "<StackPanel > "
            + "  <TextBlock Margin=\"2,0\" VerticalAlignment=\"Center\"  HorizontalAlignment=\"_HALIGNMENT_\"  "
            +
            "              Text=\"hello there\">   "
            + "  </TextBlock> "
            + "</StackPanel>"
            + "</DataTemplate>";

        return (DataTemplate) XamlReader.Load(xamlReturned);
    }

Aber jetzt will ich eine Größe geändert Handler hinzufügen, indem Sie die Zeile zu ändern:

            + "<StackPanel > "

            + "<StackPanel  SizeChanged="SizeChangedHandler" > "

Ich habe die Methode „SizeChangedHandler“ in dem Code hinter erklärt. Dies führt zu einem XAML-Parse-Fehler, wenn die Steuer Versuche zur Laufzeit geladen werden. Ich vermute, dass es nicht den Handler „SizeChangedHandler“ finden können. Wie kann ich diese Prozedur angeben, so dass der XAML-Parser ist glücklich.

War es hilfreich?

Lösung

Sie könnten versuchen, so etwas wie:

  dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));

Edit:

Ok, für Silverlight können Sie mit der Loadcontent Methode des Datatemplate, dass die Renditen und UIElement, zu dem Sie das Ereignis Atach können. Leider habe ich nicht VS bereit, zu testen und sehen, ob es atm funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top