我收到一个非常奇怪的异常。
我得到了异常(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/