因此,我有一個WPF數據網格,每行有大約8個單元格,爲簡單起見,我只包含相關的單元格,但我希望用戶能夠正確單擊該單元格並將內容複製到Windows剪貼板中,不用左鍵單擊並首先選擇它。我嘗試了很多代碼片段,但似乎無法獲得任何工作。每一行都是綁定的項目。在c#上的右鍵單擊和複製內容菜單WPF數據網格
我一直在嘗試的大部分事情都是使用MouseRightButtonDown事件。有些人已經嘗試了到XY的位置,有些人已經使用e.OriginalSource作爲FrameworkElement,但我似乎無法獲得任何工作。不確定它是否因爲它的DataGridHyperlinkColumn與示例中使用的其他類型相反?
我是c#n00b!任何幫助將不勝感激。
<DataGrid x:Name="eventsDataGrid" AutoGenerateColumns="False" IsReadOnly="true" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="10,143,0,0" VerticalAlignment="Top" Height="295" CanUserAddRows="False" CanUserReorderColumns="False" CanUserResizeColumns="True" CanUserSortColumns="False" BorderThickness="1" HorizontalScrollBarVisibility="Disabled" FontSize="10" Width="1003" MouseRightButtonDown="eventsDataGrid_MouseRightButtonDown">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy URL" Click="CopyURL">
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridHyperlinkColumn Width="230" Header="URL" Binding="{Binding URL}" CanUserResize="False">
<DataGridHyperlinkColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ToolTip" Value="URL of website" />
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGridHyperlinkColumn.HeaderStyle>
<DataGridHyperlinkColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Black" />
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="FontSize" Value="12"/>
</Style>
</DataGridHyperlinkColumn.CellStyle>
</DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
你可以上下文菜單分配到細胞,而不是'DataGrid'和使用'命令'用'CommandParameter'而不是'Click'事件。通過傳遞單元格內容作爲命令參數,所有內容都應該可用於在後面的代碼中填充剪貼板。 – grek40
謝謝你,這聽起來像我需要的東西,但我不知道如何將我的上下文菜單分配給單元格,XAML的哪一部分現在進入?我在DataGridHyperlinkColumn和DataGridHyperlinkColumn.CellStyle裏面試過它,看起來並不像它,我也找不到任何Web示例。任何想法? –
jamie
http://stackoverflow.com/questions/5200687/create-contextmenus-for-datagrid-rows只需進行一些修改即可將項目作爲命令參數傳遞 – michauzo