2013-07-23 81 views
4

此問題與How to add a Column ContextMenu in the WPF DataGrid類似,但我想要做的是在WPF Datagrid中添加不同的ContextMenu PER COLUMN。如何在WPF數據網格中添加每列ContextMenu

DataGridTextColumn不從FrameworkElement具有ContextMenu屬性導出,所以不可能直接設置ContextMenu上的DataGridTextColumnDataGridCell也有ContextMenu,但我不知道如何使用它來設置列專用菜單。

這裏的問題是如何爲每列添加一個獨特的ContextMenu(列是動態生成的)。

謝謝!

回答

4

下面是如何能夠設置的列向上時明確地來實現的示例:

<DataGrid ItemsSource="{Binding MyItems}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Column1Data}" HorizontalAlignment="Stretch"> 
          <TextBlock.ContextMenu> 
           <ContextMenu> 
            <MenuItem Header="Col 1 Item 1"/> 
            <MenuItem Header="Col 1 Item 2"/> 
           </ContextMenu> 
          </TextBlock.ContextMenu> 
         </TextBlock> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox IsChecked="{Binding Column2Data}" HorizontalAlignment="Stretch" > 
          <CheckBox.ContextMenu> 
           <ContextMenu> 
            <MenuItem Header="Col 2 Item 1"/> 
            <MenuItem Header="Col 2 Item 2"/> 
           </ContextMenu> 
          </CheckBox.ContextMenu> 
         </CheckBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

此示例包括Text柱和CheckBox柱。您可以修改CellTemplate以符合您的要求,當然還可以使用資源避免代碼重複。

+0

感謝您的好的答案。 – edtheprogrammerguy

相關問題