2010-07-19 51 views
5

有誰知道爲什麼會產生XamlParseException「無法添加類型‘System.Windows.Controls.ContextMenu’的內容類型的對象‘System.Object的’」:文本菜單風格二傳手

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas ClipToBounds="True"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style TargetType="ContentPresenter"> 
      <Setter Property="ContextMenu"> 
       <Setter.Value> 
        <ContextMenu> 
         <MenuItem Header="Remove" /> 
        </ContextMenu> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 

以下工作很好?

<ItemsControl> 
    <ItemsControl.Resources> 
     <ContextMenu x:Key="NodeContextMenu"> 
      <MenuItem Header="Remove" /> 
     </ContextMenu> 
    </ItemsControl.Resources> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas ClipToBounds="True"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style TargetType="ContentPresenter"> 
      <Setter Property="ContextMenu" Value="{StaticResource NodeContextMenu}" /> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 
+0

這很奇怪。必須是值得期待的對象,但我不明白爲什麼會導致異常......如果這是在表達式混合可能值得重新打開所有的東西,因爲它可以播放它有時在visual studio 2008中的 – 2010-07-19 11:15:50

+0

應用程序被執行,我將上下文菜單移動到資源,它的工作原理,但我認爲它應該與setter一起工作,也許它是一個錯誤 – serine 2010-07-19 12:41:24

+1

這與[此問題](http:// stackoverflow。 COM /問題/ 1495489 /不能到組系統 - 窗口控制,菜單項圖標 - 通一制定者)。 – CodeNaked 2011-03-15 16:01:48

回答

0

貌似已經被修復了一個BUG - 問題的代碼生成目標.NET 3.5時XAML分析異常,但針對.NET 4.0的時候,我工作得很好。如果你按照上面評論中提供的鏈接,你會發現連接問題與其他人的評論表明.NET 4.0的問題已經消失。