2014-11-04 22 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