c# - WPF 生成的文件无法编译

标签 c# wpf visual-studio-2013

在我的 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\academiccalendar\AcademicCalendar.Desktop\obj\Debug\MainWindow.g.cs(113,14,113,15): error CS1513: } expected 1>C:\Users\Pawel\Source\Repos\academiccalendar\AcademicCalendar.Desktop\obj\Debug\MainWindow.g.cs(123,19,123,20): error CS1514: { expected 1>C:\Users\Pawel\Source\Repos\academiccalendar\AcademicCalendar.Desktop\obj\Debug\MainWindow.g.cs(125,9,125,10): error CS1525: Invalid expression term '}' 1>C:\Users\Pawel\Source\Repos\academiccalendar\AcademicCalendar.Desktop\obj\Debug\MainWindow.g.cs(125,10,125,11): error CS1002: ; expected

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

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

void RemoveSelectedSchedule(object sender, RoutedEventArgs e)
    {

    }

最佳答案

这很奇怪......

玩了一段时间后编译

  1. 删除代码

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

  3. 添加第二个事件 setter

  4. 编译失败

  5. 加回代码

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

WPF 编译器有问题...

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

如果将 ContextMenu 移动到资源部分

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

关于c# - WPF 生成的文件无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747183/

相关文章:

c# - 按钮内容与字符串的比较

c# - MonoTouch conformsToProtocol=False 对于有效协议(protocol)

c# - 将 Visual Studio C# 项目转换为安装文件

c# - XAML 通过绑定(bind)设置资源键

asp.net-mvc - 无法加载文件或程序集 Microsoft.VisualStudio.Web.AzureAD.Contracts

c++ - MS Visual Studio 问题?

c++ - Visual Studio 错误的自动完成功能

c# - Resolver 或 ServiceProvider 使用 ICompositeViewEngine 所需的依赖项

c# - 反射(reflect)属性以获取属性。当它们在别处定义时怎么办?

c# - ListView 中是否有针对空值的特殊模板或语法?