ContextMenu в установщике стилей

Кто-нибудь знает, почему это приведет к 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>

person serine    schedule 19.07.2010    source источник
comment
это странно. должно быть что-то связанное с Value, ожидающим объект, но я не понимаю, почему это может вызвать исключение... Если это в Expression Blend, возможно, стоит снова открыть все, потому что иногда это может играть   -  person Ed Ayers    schedule 19.07.2010
comment
это в Visual Studio 2008, когда приложение выполняется, я переместил контекстное меню в ресурсы, и оно работает, но я думаю, что оно также должно работать с установщиком, возможно, это ошибка   -  person serine    schedule 19.07.2010
comment
Фактически это та же проблема, что и с этим вопросом. .   -  person CodeNaked    schedule 15.03.2011


Ответы (1)


Похоже на ошибку, которая с тех пор была исправлена ​​— рассматриваемый код генерирует исключение синтаксического анализа XAML при нацеливании на .NET 3.5, но отлично работает для меня при нацеливании на .NET 4.0. Если вы перейдете по ссылке, указанной в комментариях выше, вы обнаружите проблему подключения с комментариями других пользователей, указывающими, что проблема исчезла с .NET 4.0.

person FunnyItWorkedLastTime    schedule 13.12.2011