Как добавить обработчик в динамическую табличку данных - PullRequest
1 голос
/ 09 апреля 2010

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

    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 был счастлив.

1 Ответ

1 голос
/ 10 апреля 2010

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

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

Edit:

Хорошо, для Silverlight вы можете попробовать метод LoadContent возвращаемого DataTemplate и UIElement, к которому вы можете прикрепить событие. Извините, у меня нет VS, готового проверить и проверить, работает ли он на атм.

...