Xaml 如何在动态数据模板中添加处理程序

Xaml 如何在动态数据模板中添加处理程序,xaml,silverlight-2.0,datatemplate,Xaml,Silverlight 2.0,Datatemplate,我正在代码隐藏中成功声明数据模板,如下所示: private static DataTemplate CreateTemplate(string sortMemberPath, HorizontalAlignment horzAlignment) { const string xamlFormat = "<DataTemplate xmlns=\"http://schemas.microsoft.com/win

我正在代码隐藏中成功声明数据模板,如下所示:

    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);
    }
private static DataTemplate CreateTemplate(字符串sortMemberPath,水平对齐horzAlignment)
{
常量字符串xamlFormat
=
""
+ " "
+ "     "
+ "   "
+ ""
+ "";
return(DataTemplate)XamlReader.Load(xamlReturned);
}
但现在我想通过更改行添加一个大小更改的处理程序:

            + "<StackPanel > "
+“”

+“”

我在代码中声明了方法“SizeChangedHandler”。当控件尝试在运行时加载时,这会导致xaml解析错误。我怀疑它找不到处理程序“SizeChangedHandler”。如何指定此处理程序以使xaml解析器满意。

您可以尝试以下操作:

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


好的,对于Silverlight,您可以尝试使用DataTemplate的方法,该方法返回和UIElement,您可以将事件分配给UIElement。很抱歉,我没有准备好测试VS,看看它是否能正常工作。

您可以尝试以下方法:

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


好的,对于Silverlight,您可以尝试使用DataTemplate的方法,该方法返回和UIElement,您可以将事件分配给UIElement。很抱歉,我没有准备好测试VS,看看它是否可以工作。

在Silverlight 2中,DataTemplate没有公开VisualTree属性。在Silverlight 2中,DataTemplate没有公开VisualTree属性。