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>
.Net에 대해 많이 알지는 못하지만 다른 셀을 복사하는 경우 컴퓨터가 내부적으로 어떻게 표현할 것인가? – Shaheer
@Shaheer 나는 시간 분야에 대해별로 신경 쓰지 않는다. 모든 데이터를 문자열로 가져 오거나 텍스트 열에서 데이터를 가져올 수 있으면 좋을 것입니다. – OSH
아마도 가장 좋은 아이디어는 해당 이벤트 처리기 검사에서 Ctrl + C 조합에 대한 이벤트를 바인딩하는 것입니다. 셀이 선택되면 (있는 경우) 해당 값을 문자열 (쉼표로 구분)에 결합하고 해당 문자열을 클립 보드에 복사합니다. (나는 .Net이 그것을 할 수있는 방법이 있기를 바랍니다). – Shaheer