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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top