質問

次のようにコードビハインドでデータテンプレートを正常に宣言できます。

    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 が動作するかどうかをテストする準備ができていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top