0
I가 다음 코드로 하나의 하이퍼 링크 열이있는 데이터 그리드 :WPF DataGrid에 하이퍼 링크를 마우스 오른쪽 클릭
<dg:DataGrid Style="{StaticResource DataGridStyle}" x:Name="movieGrid"
ItemsSource="{Binding ElementName=This, Path=movieData}">
<dg:DataGrid.ContextMenu>
<ContextMenu Name="cm">
<MenuItem Header="Copy" Click="CopyCell_Click"/>
</ContextMenu>
</dg:DataGrid.ContextMenu>
<dg:DataGrid.Columns>
<dg:DataGridTemplateColumn x:Name="editColumn" Width="40" Header="Edit" CanUserResize="False">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Edit" Height="20" Tag="{Binding Path}" Click="Edit_Click"/>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
<dg:DataGridTextColumn x:Name="titleColumn" IsReadOnly="True" Binding="{Binding Title}" Header="Title" SortDirection="ascending" />
<dg:DataGridTextColumn Visibility="Collapsed" x:Name="titleDiffColumn" IsReadOnly="True" Binding="{Binding IMDBTitle}" Header="IMDBTitle" />
<dg:DataGridTextColumn x:Name="scoreColumn" IsReadOnly="True" Width="60" Binding="{Binding Score}" Header="Score" />
<dg:DataGridTextColumn x:Name="yearColumn" IsReadOnly="True" Width="60" Binding="{Binding Year}" Header="Year" />
<dg:DataGridTextColumn x:Name="genreColumn" IsReadOnly="True" Binding="{Binding Genre}" Header="Genre" />
<dg:DataGridTemplateColumn x:Name="linkColumn" Width="195" Header="Link">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Margin="3,0,0,0"><Hyperlink Tag="{Binding Link}" Click="Link_Click"><TextBlock Text="{Binding Link}"/></Hyperlink></TextBlock>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
<dg:DataGridCheckBoxColumn x:Name="seenColumn" Width="60" Binding="{Binding Seen}" Header="Seen"/>
</dg:DataGrid.Columns>
</dg:DataGrid>
u는 내가 다음 코드를 사용하여, 자신의 가치를 얻기 위해 세포에서의 ContextMenu를 사용하여 볼 수 있듯이 :
//copy datagrid item
private void CopyCell_Click(object sender, RoutedEventArgs e)
{
DataRowView itemsSource = movieGrid.CurrentItem as DataRowView;
int index = movieGrid.CurrentColumn.DisplayIndex;
string cellValue = itemsSource.Row.ItemArray[index - 1].ToString();
Clipboard.SetData(DataFormats.Text, cellValue);
}
하이퍼 링크 열은 템플릿 열이므로 분명히 작동하지 않습니다.
아직 링크를 복사 할 수있는 작업 영역이 있습니까?
하이퍼 링크 자체에서 상황에 맞는 메뉴를 시도했지만 작동하지 않았습니다. 개체 참조가 잘못되었습니다.
감사 무리
관련,
-WtFudgE-
네가하는 일은 단지 텍스트 차단이기 때문입니다. 하지만 하이퍼 링크가있는 templatecolumn을 추가하면 작동하지 않습니다. – WtFudgE
텍스트 블록이란 무엇입니까? 제공된 XAML을 사용했습니다. –
"Wallstreet Programmer"의 코드 샘플을 사용하여 저에게 잘 작동합니다. 하이퍼 링크 셀을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴가 나타나면 "복사"를 선택한 다음 어딘가에 붙여 넣으십시오. – SuperOli