Wpf- 无法将 MenuItem 转换到列表框?

标签 wpf exception 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在此 TreeView 中包含的 TreeViewItem 样式中:

<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>

该异常仅在 MenuItem 时发生有一个点击事件处理程序,即使点击事件处理程序不包含任何代码也会抛出。

最佳答案

我遇到了和你一样的异常。在仔细查看代码后,这感觉就像你会得到的情况

"The event 'Click' cannot be specified on a Target tag in a Style. Use an EventSetter instead."



我不确定为什么这不适用于这里。
无论如何,使用 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>

关于Wpf- 无法将 MenuItem 转换到列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485355/

相关文章:

c# - 在 MVVM 中对绑定(bind)到 DataGrid 的 ObservableCollection 进行排序

c# - Linq 查询中的“System.Data.Entity.Core.EntityCommandExecutionException”

java - 如何处理java.lang.nullpointerException

python - 如何获取异常的实例类型?

c# - 如何防止文本 block 重叠?

c# - 如何强制 BusyIndi​​cator?

wpf - 在 wpf 窗口中删除事件处理程序

C# 尝试/捕捉噩梦

c# - 点击 Windows Phone 8 8.1 时禁用 slider 值更改

wpf - 如何使 WPF 资源样式在运行时可切换?