2011-08-01 77 views
0

每一行我有一個GridView它有幾個專欄它們都綁定到一個數據結構在我的視圖模型層,所以我想要做的是WPF上下文菜單在GridView

  1. 有一個上下文菜單,當用戶點擊GridView中的一行數據時會彈出(到目前爲止,只有當我點擊我放置的列的標題時,才能使上下文菜單出現。)
  2. 根據用戶點擊的當前行的內容,上下文菜單的內容會有所不同。

有什麼建議嗎?謝謝

回答

0

你可以在ItemContainerStyle中設置ContextMenu,使其依賴於你可以使用的一些行DataTriggers


編輯:如果你決定換出整個文本菜單上的條件結構應採取以下形式:

<Style TargetType="{x:Type ListViewItem}"> 
    <Style.Resources> 
      <ContextMenu x:Key="DefaultMenu"> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
      <ContextMenu x:Key="NonDefaultMenu"> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
    </Style.Resources> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding SomeProperty}" Value="SomeValue"> 
      <Setter Property="ContextMenu" Value="{StaticResource NonDefaultMenu}"/> 
     </DataTrigger> 
    </Style.Triggers> 
    <Setter Property="ContextMenu" Value="{StaticResource DefaultMenu}"/> 
</Style> 

你通常也可以代替定義文本菜單很好,但如果你添加事件處理程序它得到越野車,語法將是:

<Setter Property="ContextMenu"> 
     <Setter.Value> 
      <ContextMenu> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
     </Setter.Value> 
</Setter> 
+0

我想添加一個DataTrigger風格.Triggers部分和DataTrigger裏面我有一個上下文菜單,但我仍然收到錯誤「類型'上下文菜單'的值不能被添加到'SetterBaseCollection'類型的集合或字典中,對不起我第一次編程WPF所以我不知道這是什麼意思,我錯過了什麼? –

+0

添加了一些示例代碼(希望這不會是錯誤,因爲我寫在這裏)... –

+0

@HB,那個錯誤「類型的'上下文菜單'的值不能被添加到'SetterBaseCollection'類型的集合或字典如果我們創建上下文菜單的StaticResource並將其設置爲一個值,那麼''將會消失...