Style setter中的ContextMenu

时间:2010-07-19 10:10:56

标签: wpf contextmenu styles

有谁知道为什么会产生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>

1 个答案:

答案 0 :(得分:0)

看起来像一个已修复的错误 - 有问题的代码在面向.NET 3.5时生成XAML解析异常,但在针对.NET 4.0时可以正常使用。如果你按照上面评论中提供的链接,你会发现一个连接问题,其他人的评论表明问题已经消失了.NET 4.0。