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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top