如何在动态datatemplate中添加处理程序

时间:2010-04-09 19:51:21

标签: xaml silverlight-2.0 datatemplate

我在后面的代码中成功声明了一个数据模板,如下所示:

    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 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

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

编辑:

好的,对于Silverlight,您可以尝试使用返回的DataTemplate的LoadContent方法和可以接收事件的UIElement。对不起,我没有准备好测试VS,看它是否有效。