2011-06-27 50 views
1

我用ContextMenu属性创建了一个Silverlight控件。我还创建了一个ContextMenu静态资源,我想将其添加到控件中,但出现编译错误。ContextMenu静态资源编译错误

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:controlsInputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" > 
    <controlsInputToolkit:ContextMenuService.ContextMenu x:Key="FilterableTreeViewContextMenu"> 
     <controlsInputToolkit:ContextMenu> 
      <controlsInputToolkit:MenuItem Header="New" /> 
     </controlsInputToolkit:ContextMenu> 
    </controlsInputToolkit:ContextMenuService.ContextMenu> 
</ResourceDictionary> 

错误: 在解析规则PropertyElement :: =意外ATTRIBUTE。 PROPERTYELEMENT内容? ENDTAG ..

任何想法?

回答

1

此错误表示属性已应用于无效的属性元素。在你的情况下,这是controlsInputToolkit:ContextMenuService.ContextMenu元素上的x:Key属性。您需要将其删除。

您可以通过包含在元素名称中的句点标识XAML中的属性元素。期间之前的部分名称是类的名称,而后面的部分是该类的属性。这些元素中不允许属性。

您的XAML非常紧凑,可以轻松找到问题所在。如果在更大的XAML文件中发生此错误,则可以在Visual Studio中使用以下正则表达式来查找问题。只需确保在“查找和替换”对话框中选中“使用”复选框,然后在组合框中选择“正则表达式”。

\ <:铝@:AL @:铝@ = \ “@ \”:乙@>

Find and Replace Dialog with Regular Expressions Enabled

如果需要调整的表达则MSDN documentation on regular expression syntax将是有用的。