我在DataGrid上使用上下文菜單。
我希望每個項目都會顯示右鍵單擊的實體的上下文菜單項。 如果沒有實體,則上下文菜單項列表將爲空,因此在這種情況下,我不希望上下文菜單對於具有空項目的用戶可見。 (我看到空矩形會混淆用戶)。爲什麼我不能在ContextMenu和ItemsSource上使用「HasItems」屬性?
我的代碼如下所示:
<ContextMenu Name="cm" ItemsSource="{Binding DemoInstance.ContextMenuItems}"
ItemContainerStyle="{StaticResource demo2Style}" >
<Style TargetType="{x:Type ContextMenu}">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</ContextMenu>
,當我使用它,我得到異常:
「 'System.InvalidOperationException' 類型的未處理的異常出現在PresentationFramework.dll
附加信息:在使用ItemsSource之前,項目集合必須爲空。「
爲什麼會發生這種情況,我該如何解決它?
不風格的TARGETTYPE說,這將適用於所有文本菜單?我們是否必須明確地將它包含在ContextMenu.Style中? – LxL
是的。但問題是OP在ContextMenu下添加了樣式。理想的樣式應該駐留在父元素或根元素資源部分,以便它明確地應用於所有子上下文菜單。 –
現在我明白了。然後我建議刪除TargetType,因爲在這種情況下它不是必要的,它會欺騙像我這樣的人和OP認爲它適用於每個ContextMenu。 – LxL