Question

Je déclare avec succès un modèle de données dans un code sous-jacent comme suit:

    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);
    }

Mais maintenant, je veux ajouter une taille gestionnaire modifiée en changeant la ligne:

            + "<StackPanel > "

à

            + "<StackPanel  SizeChanged="SizeChangedHandler" > "

J'ai la méthode « SizeChangedHandler » a déclaré dans le code sous-jacent. Il en résulte une erreur d'analyse de XAML lorsque les tentatives de contrôle de charger à l'exécution. Je pense qu'il ne peut pas trouver le gestionnaire « SizeChangedHandler ». Comment puis-je préciser ce gestionnaire de telle sorte que l'analyseur XAML est heureux.

Était-ce utile?

La solution

Vous pouvez essayer quelque chose comme:

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

Edit:

Ok, pour Silverlight, vous pouvez essayer le LoadContent méthode du DataTemplate qui retourne et UIElement auquel vous pouvez ATACH l'événement. Désolé, je n'ai pas VS prêt à tester et voir si cela fonctionne atm.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top