WPF生成的文件赢得';t编译

本文关键字:编译 文件 WPF | 更新日期: 2023-09-27 18:29:03

在我的WPF应用程序中,我为上下文菜单项(ListBoxItem的上下文菜单)添加了点击事件处理程序。

当我尝试以下方法时:

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

并尝试构建,构建失败,并显示以下错误消息:

1> C:''Users''Pawel''Source''Repos''acadiccalendar''academiccalendar.Desktop''obj''Debug''MainWindow.g.cs(113,14113,15):应为错误CS513:}1> C:''Users''Pawel''Source''Repos''acadiccalendar''academiccalendar.Desktop''obj''Debug''MainWindow.g.cs(123,19123,20):错误CS514:{预期1> C:''Users''Pawel''Source''Repos''acadiccalendar''academiccalendar.Desktop''obj''Debug''MainWindow.g.cs(125,9125,10):错误CS1525:表达式项"}"无效1> C:''Users''Pawel''Source''Repos''acadiccalendar''academiccalendar.Desktop''obj''Debug''MainWindow.g.cs(125,10125,11):错误CS1002:;预期

但是,如果删除了Context MenuItem的设置Click事件处理程序,则代码将正确编译和运行。

EDIt事件处理程序当前为空。

void RemoveSelectedSchedule(object sender, RoutedEventArgs e)
    {
    }

WPF生成的文件赢得';t编译

这很奇怪。。。

玩了一段时间后,我得到了它来编译

  1. 删除代码

            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="Remove" Click="RemoveSelectedSchedule"/>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
    
  2. 编译-失败

  3. 添加第二个EventSetter

  4. 编译失败

  5. 添加回代码

            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="Remove" Click="RemoveSelectedSchedule"/>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
    
  6. 再次编译-编译

WPF编译器出现问题。。。

编辑1个更好的答案。。。

如果将上下文菜单移到资源部分

<ContextMenu x:Key="ListBoxItemContextMenu">
            <MenuItem Header="View" Name="MenuItemView" Click="ContextClicked"/>
        </ContextMenu>

并且在Setter中访问它,它似乎可以工作

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