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

    }

      

+3


source to share


1 answer


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> 

      

+2


source







All Articles