Comment ajouter gestionnaire dans DataTemplate dynamique
-
25-09-2019 - |
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.
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.