Come aggiungere gestore in DataTemplate dinamica
-
25-09-2019 - |
Domanda
I dichiaro con successo un modello di dati in un codice dietro come segue:
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);
}
Ma ora voglio aggiungere un gestore di dimensioni cambiato cambiando la riga:
+ "<StackPanel > "
a
+ "<StackPanel SizeChanged="SizeChangedHandler" > "
Ho il metodo "SizeChangedHandler" ha dichiarato nel codice dietro. Questo si traduce in un errore di analisi XAML quando i tentativi di controllo per caricare in fase di esecuzione. Ho il sospetto che non riesce a trovare il gestore "SizeChangedHandler". Come faccio a specificare questo gestore in modo che il parser XAML è felice.
Soluzione
Si potrebbe provare qualcosa di simile:
dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));
Modifica:
Ok, per Silverlight si potrebbe provare con il LoadContent metodo della DataTemplate che ritorni e UIElement a cui è possibile Atach l'evento. Mi dispiace non ho VS pronto a prova e vedere se funziona atm.