yoshikazuendo
11/20/2013 - 4:30 AM

XamDataGridでクリップボードを操作する。 独自で組む必要はなく、FieldLayoutSettingにプロパティAllowClipboardOperationsが用意されているので、そのプロパティを設定するだけで実現できます。コピー時に、複数のセルを選択・コピーするこ

XamDataGridでクリップボードを操作する。

独自で組む必要はなく、FieldLayoutSettingにプロパティAllowClipboardOperationsが用意されているので、そのプロパティを設定するだけで実現できます。コピー時に、複数のセルを選択・コピーすることもできる。なかなかやりおる。

http://help.jp.infragistics.com/Help/NetAdvantage/WPF/2011.1/CLR4.0/html/InfragisticsWPF4.DataPresenter.v11.1Infragistics.Windows.DataPresenter.FieldLayoutSettingsAllowClipboardOperations.html

// ちなみに独自で実装するなかこんな感じかな? 
private void xamDataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)
{
	// Ctrl + C が押下された場合 true となる
	if (Convert.ToBoolean(Keyboard.Modifiers & ModifierKeys.Control) && e.Key == Key.C) {
		// ActiveCell の Value を取得
		object value = this.xamDataGrid1.ActiveCell.Value;
		// クリップボードに取得した値をコピー
		Clipboard.SetData(DataFormats.Text, value);
	}
}
<igDP:XamDataGrid HorizontalAlignment="Left" Name="xamDataGrid1" VerticalAlignment="Top" BindToSampleData="True" PreviewKeyDown="xamDataGrid1_PreviewKeyDown">
  <igDP:XamDataGrid.FieldSettings>
      <igDP:FieldSettings AllowEdit="False"/>
  </igDP:XamDataGrid.FieldSettings>
	<igDP:XamDataGrid.FieldLayoutSettings>
	  <!-- AllowClipboardOperationsでクリップボードの制御を設定できる。 -->
	  <!-- CopyFieldLabelsToClipboardは、コピーする内容にヘッダーを含めるかどうかを指定できる。 -->
		<igDP:FieldLayoutSettings AllowClipboardOperations="Copy"
		    CopyFieldLabelsToClipboard="true" />
	</igDP:XamDataGrid.FieldLayoutSettings>
</igDP:XamDataGrid>