2014-11-04 51 views
3

在我的WPF应用程序中,我添加上下文菜单项(ListBoxItem的上下文菜单)的单击事件处理程序。WPF生成的文件将不会编译

当我尝试以下方法:

  <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:\用户\的Pawel \源\回购\ 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 \ Aca demicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs(125,9,125,10):错误CS1525:无效的表达式'}' 1> C:\ Users \ Pawel \ Source \ Repos \ academiccalendar \ AcademicCalendar.Desktop \ obj \ Debug \ MainWindow.g.cs(125,10,125,11):error CS1002:;预计

但是,如果设置Click事件处理程序已删除的上下文MenuItem,代码编译并正常运行。

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

void RemoveSelectedSchedule(object sender, RoutedEventArgs e) 
    { 

    } 
+0

右键单击t他在XAML窗口中单击事件处理程序并导航到eventhanlder。仔细观察代码。 – 2014-11-04 23:45:44

回答

2

这是奇怪...

后有的玩我把它编译

  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> 

并获得它它似乎工作的安装程序

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

谢谢,您的解决方案有所帮助。然而,这是奇怪的行为,我会在不久的将来进行调查。 – pkupidura 2014-11-05 17:05:41