I am getting a very strange exception. I get the exception:
"'Set connectionId threw an exception.' Line number '26' and line position '34'."
When I look at the Inner Exception I get:
"Unable to cast object of type 'System.Windows.Controls.MenuItem' to type 'System.Windows.Controls.ListBox'."
I have narrowed the cause of the exception to the MenuItem
in the TreeViewItem style contained in this 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>
The exception only occurs when the MenuItem
has a click event handler and is thrown even when the click event handler does not contain any code.
I got the same exception as you did. After looking closer at the code, this feels like a situation where you would get
"The event 'Click' cannot be specified on a Target tag in a Style. Use an EventSetter instead."
I'm not sure why that doesn't apply here.
Anyway, using an EventSetter works
<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>
I had to face this weird situation myself. There is an easy way to get over it, you have to clean and rebuild the project and the exception will go away.
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With