我在后面的代码中成功声明了一个数据模板,如下所示:
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解析器满意。
答案 0 :(得分:1)
您可以尝试以下方式:
dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));
编辑:
好的,对于Silverlight,您可以尝试使用返回的DataTemplate的LoadContent方法和可以接收事件的UIElement。对不起,我没有准备好测试VS,看它是否有效。