【发布时间】:2011-03-17 20:17:05
【问题描述】:
有谁知道为什么这会产生 XamlParseException “无法将 'System.Windows.Controls.ContextMenu' 类型的内容添加到 'System.Object' 类型的对象”:
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas ClipToBounds="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Remove" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
下面的工作正常吗?
<ItemsControl>
<ItemsControl.Resources>
<ContextMenu x:Key="NodeContextMenu">
<MenuItem Header="Remove" />
</ContextMenu>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas ClipToBounds="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="ContextMenu" Value="{StaticResource NodeContextMenu}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
【问题讨论】:
-
这很奇怪。必须与 Value 期望一个对象有关,但我不明白为什么会导致异常...如果这是在 Expression Blend 中,则可能值得重新打开所有内容,因为它有时会播放
-
它在 Visual Studio 2008 中执行应用程序时,我将上下文菜单移动到资源并且它工作但我认为它也应该与 setter 一起工作,也许它是一个错误
-
这实际上与this question 的问题相同。
标签: wpf contextmenu styles