XamlReader.Parse(string) を使用してデータ テンプレートを動的に構築しています。私が抱えている問題は、XamlReader を使用して作成したコントロールにイベントを配置できないことです。オンラインで調査を行った結果、これが XamlReader の既知の制限であることがわかりました。
WPF のコマンドについてはよくわかりませんが、どうにかしてそれらを使用して同じ結果を得ることができますか? もしそうなら、どのように?そうでない場合、Xaml Reader を使用して作成されたコントロールからコード ビハインドでイベントを処理する方法はありますか?
以下は、私が作成するデータテンプレートの例です。このデータ テンプレートをホストする Window のコード ビハインドで、MenuItem_Click イベント ハンドラを定義しています。
実行しようとすると、次のエラーが表示されます: System.Windows.Markup.XamlParseException was unhandled: Failed to create a 'Click' from the text 'MenuItem_Click'.
DataTemplate result = null;
StringBuilder sb = new StringBuilder();
sb.Append(@"<DataTemplate
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Grid Width=""Auto"" Height=""Auto"">
<TextBlock Text=""Hello"">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem
Header=""World""
Click=""MenuItem_Click""></MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Grid>
</DataTemplate>");
result = XamlReader.Parse(sb.ToString()) as DataTemplate;