Wpf-无法将MenuItem转换为Listbox?

Jus*_*tin 5 wpf xaml exception

我得到一个非常奇怪的例外.我得到了例外:

"'Set connectionId threw an exception.' Line number '26' and line position '34'."

当我看到内部异常时,我得到:

"Unable to cast object of type 'System.Windows.Controls.MenuItem' to type 'System.Windows.Controls.ListBox'."

我已将此异常的原因缩小到MenuItem包含在此的TreeViewItem样式中TreeView:

<TreeView x:Name="ProjectElementTreeView" ItemsSource="{Binding ProjectElementCollection}"  DisplayMemberPath="Name" Padding="0" SelectedItemChanged="ProjectElementTreeView_SelectedItemChanged" GotKeyboardFocus="ProjectElementTreeView_GotKeyboardFocus">
        <TreeView.Resources>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="HorizontalAlignment" Value="Left" />
                <Setter Property="ContextMenu">
                    <Setter.Value>
                        <ContextMenu>
                            <MenuItem Name="AddProjectElementMenuItem" Header="Add" Click="AddProjectElementMenuItem_Click"/>
                        </ContextMenu>
                    </Setter.Value>
                </Setter>
            </Style>
        </TreeView.Resources>
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

仅当MenuItem具有单击事件处理程序时才会发生异常,即使单击事件处理程序不包含任何代码也会抛出该异常.

Fre*_*lad 16

我得到了和你一样的例外.仔细观察代码之后,感觉就像你会得到的情况

"无法在样式中的Target标记上指定事件'Click'.请改用EventSetter."

我不确定为什么这不适用于此.
无论如何,使用EventSetter工作

<Setter Property="ContextMenu">
    <Setter.Value>
        <ContextMenu>
            <MenuItem Name="AddProjectElementMenuItem" Header="Add">
                <MenuItem.Style>
                    <Style TargetType="MenuItem">
                        <EventSetter Event="Click" Handler="AddProjectElementMenuItem_Click"/>
                    </Style>
                </MenuItem.Style>
            </MenuItem>
        </ContextMenu>
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)