2014-03-06 22 views
0

我在我的WPF應用程序中有一個TreeView,我想顯示或隱藏上下文菜單,具體取決於treeviewItem的類型。 TreeView是數據綁定並使用HierarchicalDataTemplate填充。我可以禁用rightmouse事件代碼中的上下文菜單項。 但我希望在XAML中完成此操作。我試過的是;使用DataTrigger來隱藏/顯示WPF TreeView ContectMenu

<Grid.Resources> 
<ContextMenu x:Key="MyContextMenu"> 
    <MenuItem Name="Menu1" Header="Add " Click="AddNew_Click" ></MenuItem> 
    <MenuItem Name="Menu2" Header="" Click="Menu2_Click"></MenuItem> 
</ContextMenu> 
</Grid.Resources> 

在一側的樹形目錄我有此代碼

<HierarchicalDataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Document.DocumentType}" Value="P"> 
      <Setter TargetName="icon" Property="Source" Value="../Images/P.png"/> 
      *<Setter Property="ContextMenu" Value="{StaticResource MyContextMenu}"/>* 

     </DataTrigger> 
</HierarchicalDataTemplate.Triggers> 

但是這給運行時錯誤「對象引用不設置到對象的實例」。當DocumentType爲'P'時,您可以看到圖像設置爲數據觸發器,並且只有當DocumentType爲'P'時隱藏/禁用上下文菜單,否則隱藏/禁用。 可以這樣做嗎?

+0

你的問題不清楚。觸發器不工作?或崩潰來了是問題?什麼值爲空? –

+0

觸發器正在工作,圖標圖像被應用。但是當我嘗試右鍵單擊treeviewitem以獲取上下文菜單時,它會給出該異常。 – voddy

回答

0

另一個人有同樣的問題,他從微軟論壇得到了這個答案。它不使用觸發器,但是上下文是動態的。我可以使用這種變化來顯示我的上下文菜單,只有當我需要它時根據綁定的數據。

here is the link

我將標誌着這個作爲回答,所以它可能會幫助別人的未來。