Como adicionar manipulador no dinâmico datatemplate
-
25-09-2019 - |
Pergunta
Estou declarando com sucesso um modelo de dados em um código por trás da seguinte maneira:
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);
}
Mas agora eu quero adicionar um manipulador alterado de tamanho alterando a linha:
+ "<StackPanel > "
para
+ "<StackPanel SizeChanged="SizeChangedHandler" > "
Eu tenho o método "sizechangedhandler" declarado no código por trás. Isso resulta em um erro de análise XAML quando o controle tenta carregar no tempo de execução. Suspeito que não possa encontrar o manipulador "Sizechangedhandler". Como posso especificar esse manipulador para que o analisador XAML fique feliz.
Solução
Você poderia tentar algo como:
dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));
Editar:
Ok, para Silverlight, você poderia tentar com o LoadContent Método do Datatemplate que retorna e em um UIELEMENT ao qual você pode atingir o evento. Desculpe, não tenho vs prontos para testar e ver se funciona atm.