動的データテンプレートにハンドラーを追加する方法
-
25-09-2019 - |
質問
次のようにコードビハインドでデータテンプレートを正常に宣言できます。
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 パーサーが満足できるようにこのハンドラーを指定するにはどうすればよいですか。
解決
次のようなことを試すことができます。
dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));
編集:
さて、Silverlight の場合は、次のように試してみることができます コンテンツのロード 返される DataTemplate のメソッドと、イベントをアタッチできる UIElement。申し訳ありませんが、VS が動作するかどうかをテストする準備ができていません。
所属していません StackOverflow