2010-12-19 68 views
5

我收到了一個很奇怪的例外。 我得到異常:Wpf-無法將MenuItem轉換爲Listbox?

"'Set connectionId threw an exception.' Line number '26' and line position '34'."

當我看的內部異常,我得到:

"Unable to cast object of type 'System.Windows.Controls.MenuItem' to type 'System.Windows.Controls.ListBox'."

我縮小了異常的原因,以包含在樹型視圖風格MenuItem在此TreeView

<TreeView x:Name="ProjectElementTreeView" ItemsSource="{Binding ProjectElementCollection}" DisplayMemberPath="Name" Padding="0" SelectedItemChanged="ProjectElementTreeView_SelectedItemChanged" GotKeyboardFocus="ProjectElementTreeView_GotKeyboardFocus"> 
     <TreeView.Resources> 
      <Style TargetType="{x:Type TreeViewItem}"> 
       <Setter Property="HorizontalAlignment" Value="Left" /> 
       <Setter Property="ContextMenu"> 
        <Setter.Value> 
         <ContextMenu> 
          <MenuItem Name="AddProjectElementMenuItem" Header="Add" Click="AddProjectElementMenuItem_Click"/> 
         </ContextMenu> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </TreeView.Resources> 
    </TreeView> 

僅當MenuItem具有單擊事件處理程序並且即使單擊事件處理程序不包含任何代碼時也會引發該異常。

+0

哇,這真的很奇怪... – 2010-12-19 22:51:39

+0

該代碼發佈對我來說工作得很好所以我認爲你的問題是在一個不同的代碼段。試圖設置ConnectionId的是什麼? – Rachel 2010-12-20 14:29:11

回答

15

我得到了相同的異常像你一樣。看代碼接近後,這種感覺就像一個情況下,你會得到

「事件‘點擊’不能在樣式一個目標標籤中指定 。使用一個 EventSetter來代替。」

我不知道爲什麼這裏不適用。
總之,使用EventSetter工作

<Setter Property="ContextMenu"> 
    <Setter.Value> 
     <ContextMenu> 
      <MenuItem Name="AddProjectElementMenuItem" Header="Add"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <EventSetter Event="Click" Handler="AddProjectElementMenuItem_Click"/> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
     </ContextMenu> 
    </Setter.Value> 
</Setter> 
0

我複製了你的代碼,它適用於我。你確定你發佈的代碼導致了這個問題嗎?

而是下ContextMenu.Items放置菜單項中的文本菜單的內容,其嵌套的:

<ListBox.ContextMenu> 
    <ContextMenu> 
     <ContextMenu.Items> 
      <MenuItem Name="AddProjectElementMenuItem"></MenuItem> 
     </ContextMenu.Items> 
    </ContextMenu> 
</ListBox.ContextMenu>a 
+0

仍然導致異常。再一次,只有在MenuItem附加了點擊事件時纔會發生異常。 – Justin 2010-12-19 23:41:45

+0

是的,我用附加的事件處理程序測試過它。我認爲您發佈的xaml沒有任何問題 - 它必須是機器/配置問題。 – 2010-12-19 23:54:28

+0

你(都)用什麼版本來試試這個。 [免責聲明:我沒有自己嘗試過 - 只是試圖確保你正在比較橙子和桔子。] – 2010-12-20 13:54:57

2

我不得不面對這個奇怪的情況我自己。 有一個簡單的方法來克服它,你必須清理和重建項目,異常將消失。


希望這會有所幫助。

+0

地獄是的,我花了半個小時。這對我有用,謝謝 – 2011-08-11 19:42:25

+0

我不得不比這更進一步,關閉VS並刪除項目文件夾中的obj和bin目錄。 – Brendan 2015-07-23 14:18:15

+0

這些都不適合我,結果不得不使用事件設置器。 – 2015-11-16 17:31:27

0

我遇到了這個錯誤,發現我把標記放在<MyApp:AppPage.Resources></MyApp:AppPage.Resources>之外,我的意思是我知道它必須在裏面,但我沒有注意到結束標記已經在我的上下文菜單標記之前調用過。我以爲我還在裏面。我剛剛在結束標記之前移動它,並按預期工作。

相關問題