Generated WPF files won't compile
In my WPF application, I add a click event handler for the context menu item (context menu for the ListBoxItem).
When I try the following approach:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Remove" Click="RemoveSelectedSchedule"/>
</ContextMenu>
</Setter.Value>
</Setter>
<EventSetter Event="MouseDoubleClick" Handler="ScheduleList_MouseDoubleClick"/>
</Style>
</ListBox.ItemContainerStyle>
and try to build, fail with the following error messages:
1> C: \ Users \ Pawel \ Source \ Repos \ academcalendar \ AcademicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs (113,14,113,15): Error CS1513:} expected 1> C: \ Users \ Pawel \ Source \ Repos \ academcalendar \ AcademicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs (123,19,123,20): Error CS1514: {expected 1> C: \ Users \ Pawel \ Source \ Repos \ academcalendar \ AcademicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs (125,9,125,10): Error CS1525: Invalid expression term '}' 1> C: \ Users \ Pawel \ Source \ Repos \ academcalendar \ AcademicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs (125,10,125,11): error CS1002 :; Expected,
However, if the Click event handler setting is removed for the Context MenuItem, the code compiles and runs correctly.
The EDIt event handler is currently empty.
void RemoveSelectedSchedule(object sender, RoutedEventArgs e)
{
}
source to share
This is strange...
After some playing around I got it to compile
-
Remove the code
<Setter Property="ContextMenu"> <Setter.Value> <ContextMenu> <MenuItem Header="Remove" Click="RemoveSelectedSchedule"/> </ContextMenu> </Setter.Value> </Setter>
-
Compile - failure
-
Add second EventSetter
-
Compile crash
-
Add the code
<Setter Property="ContextMenu"> <Setter.Value> <ContextMenu> <MenuItem Header="Remove" Click="RemoveSelectedSchedule"/> </ContextMenu> </Setter.Value> </Setter>
- Compile Again - Compile !!!
Something is wrong with the WPF compiler ...
Edit 1 better answer ...
If you move the ContextMenu section to the resources section
<ContextMenu x:Key="ListBoxItemContextMenu">
<MenuItem Header="View" Name="MenuItemView" Click="ContextClicked"/>
</ContextMenu>
And accessing it in Setter seems to work
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="ContextMenu" Value="{StaticResource ListBoxItemContextMenu}">
</Setter>
<EventSetter Event="MouseDown" Handler="EventSetter_OnHandler1"></EventSetter>
<EventSetter Event="MouseDoubleClick" Handler="EventSetter_OnHandler2"></EventSetter>
</Style>
source to share