Вопрос

Я успешно объявляю шаблон данных в коде за следующим образом:

    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);
    }

Но теперь я хочу добавить размер измененного обработчика, изменив линию:

            + "<StackPanel > "

к

            + "<StackPanel  SizeChanged="SizeChangedHandler" > "

У меня есть метод «SizeChangedHandler», объявленный в коде позади. Это приводит к ошибке разбора XAML, когда элемент управления пытается загрузить во время выполнения. Я подозреваю, что он не может найти обработчик «SizechangedHandler». Как я могу указать этот обработчик, чтобы Xaml Parser счастлив.

Это было полезно?

Решение

Вы можете попробовать что-то вроде:

  dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));

Редактировать:

Хорошо, для Silverlight вы можете попробовать с LASTContent. Способ данных DataTemplate, который возвращает и Uielement, к которому вы можете атачать событие. Извините, у меня нет против готовых к тестированию и посмотреть, работает ли он банкоматом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top