5

この質問はHow to add a Column ContextMenu in the WPF DataGrid に似ていますが、私がやろうとしているのはContextMenu、WPF Datagrid に別の PER COLUMN を追加することです。

DataGridTextColumnはプロパティFrameworkElementを持つ whichから派生していないため、を に直接設定することはできません。 にもありますが、それを使用して列固有のメニューを設定する方法がわかりません。ContextMenuContextMenuDataGridTextColumnDataGridCellContextMenu

ここでの質問は、ContextMenu列ごとに固有のものを追加する方法です (列は動的に生成されます)。

ありがとう!

4

1 に答える 1

5

列を明示的に設定するときにこれを実現する方法の例を次に示します。

 <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、もちろんリソースを使用してコードの重複を避けることができます。

于 2013-07-23T19:15:19.157 に答える