2012-02-12 2 views
0

DataGrid에서 클립 보드로 복사 작업을 수행 할 수 없습니다. 사용자가 DataGrid에서 일부 셀을 선택하고 원하는 위치에 붙여 넣을 수있게하려고합니다.DataGrid에서 복사 및 붙여 넣기 - ctrl C와 같이 복사 할 수없는 이유

그리드에서 마우스로 클릭하여 셀을 선택하려고하면 아무 것도 나타나지 않습니다. 셀/행이 강조 표시로 변경되지 않고 copy (Ctrl + C)가 아무 것도하지 않습니다.

<Grid Margin="2,2,2,2" Background="LightGray"> 
    <!-- Log --> 
    <Label Name="activityLogLabel" 
      Height="28" 
      Margin="15,5,0,0" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" 
      Content="Activity log" /> 
    <Grid Width="500" 
      Height="482" 
      Margin="15,25,0,0" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" 
      Background="White"> 
     <DataGrid x:Name="log" 
        MaxHeight="Infinity" 
        AutoGenerateColumns="False" 
        CanUserAddRows="False" 
        CanUserDeleteRows="False" 
        CanUserReorderColumns="False" 
        CanUserResizeColumns="True" 
        ClipboardCopyMode="ExcludeHeader" 
        ClipToBounds="True" 
        DataContext="{StaticResource LogViewModel}" 
        HeadersVisibility="None" 
        IsEnabled="true" 
        IsManipulationEnabled="True" 
        IsReadOnly="True" 
        ItemsSource="{Binding Path=LogData}" 
        RowHeight="NaN" 
        SelectionMode="Extended" 
        SelectionUnit="Cell"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Time, Mode=OneWay}" CanUserResize="False" /> 
       <DataGridTextColumn Binding="{Binding Text, Mode=OneWay}" CanUserResize="False"> 
        <DataGridTextColumn.ElementStyle> 
         <Style TargetType="TextBlock"> 
          <Setter Property="Foreground" Value="{Binding LogLevel, Mode=OneWay, Converter={StaticResource LogLevelConverter}, ConverterParameter=.}" /> 
         </Style> 
        </DataGridTextColumn.ElementStyle> 
       </DataGridTextColumn> 
      </DataGrid.Columns> 
     </DataGrid> 

    </Grid> 
+0

.Net에 대해 많이 알지는 못하지만 다른 셀을 복사하는 경우 컴퓨터가 내부적으로 어떻게 표현할 것인가? – Shaheer

+0

@Shaheer 나는 시간 분야에 대해별로 신경 쓰지 않는다. 모든 데이터를 문자열로 가져 오거나 텍스트 열에서 데이터를 가져올 수 있으면 좋을 것입니다. – OSH

+0

아마도 가장 좋은 아이디어는 해당 이벤트 처리기 검사에서 Ctrl + C 조합에 대한 이벤트를 바인딩하는 것입니다. 셀이 선택되면 (있는 경우) 해당 값을 문자열 (쉼표로 구분)에 결합하고 해당 문자열을 클립 보드에 복사합니다. (나는 .Net이 그것을 할 수있는 방법이 있기를 바랍니다). – Shaheer

답변

1

젠장 :

여기 내 데이터 그리드입니다. 나는 지금 매우 어리 석다. (데이터 로그에 워터 마크를 제공하기 위해) 데이터 격자의 상단으로 표시된 이미지 (반투명)가 있습니다. 사용자가 행을 시도 할 때 실제로 이미지를 선택하는 중 ...

+0

hahahaha 권자,하지만 적어도 당신의 문제에 대한 답변을 가지고 :) – Shaheer