我正在使用XamlReader.Parse(string)动态构建我的datatemplate.我遇到的问题是我无法在使用XamlReader创建的任何控件上放置任何事件.在网上做了一些研究后,我了解到这是XamlReader的一个已知限制.
我对WPF中的命令了解不多,但是我可以以某种方式使用它们来获得相同的结果吗?如果是这样的话?如果没有,我有什么办法可以在使用Xaml Reader创建的控件中处理我的代码中的事件?
下面是我创建的datatemplate的示例.我有窗口的代码隐藏中定义的MenuItem_Click事件处理程序将托管此datatemplate.
尝试运行时出现以下错误:System.Windows.Markup.XamlParseException未处理:无法从文本'MenuItem_Click'创建'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;
Run Code Online (Sandbox Code Playgroud)