ContextMenu в сеттер стиля - PullRequest
       17

ContextMenu в сеттер стиля

6 голосов
/ 19 июля 2010

Кто-нибудь знает, почему это приведет к исключению 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 голосов
/ 13 декабря 2011

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

...