DataGridの文字列を選択してCtrl+Cを行うと、コピーが行われますが、
エクセルにはりつけると自動的にセルの書式に「折り返して全体を表示する」が入ってしまいます。
これを除いてクリップボードへコピーにするには、
自前でCtrl+Cをカスタマイズするしかないのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
自己解決
Ctrl+Cを自前でカスタマイズする方法で解決しました。
XAML
1 <DataGrid.InputBindings> 2 <KeyBinding Gesture="CTRL+C" Command="{Binding MyCopy}" /> 3</DataGrid.InputBindings>
C#
1public override void OnApplyTemplate() 2{ 3 base.OnApplyTemplate(); 4 5 6 // Ctrl+Cのコピーコマンドを上書きします。 7 var viewModel = this.DataSource as MyCopyViewModel; 8 viewModel.QuickCopy = new DelegateCommand( ()=> 9 { 10 this.CopyToClipBoard(); 11 }); 12} 13internal void CopyToClipBoard() 14{ 15 ApplicationCommands.Copy.Execute(null, this.dataGrid); 16 Clipboard.SetText(Clipboard.GetText()); 17} 18
投稿2018/08/01 04:11
総合スコア11
0
投稿2018/07/26 03:41
総合スコア28673
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答ありがとうございます。
こちらは、
クリップボードに転送する内容をプログラムコードで処理したい場合に利用するイベントだと理解しています。
現在困っているのは、転送される文字列の内容ではなく、転送時のセル書式が付与される箇所なので、これでは対応は不可だと思っています。
もし、こちらでセル書式の指定もしくはクリアが可能であれば、
指定方法を教えていただけると助かります。
書式などコピーされないはずです。
改行が入っているか Excel の設定の問題でしょう。
コメントありがとうございます。
ApplicationCommands.Copy.Execute(null, this.dataGrid);
Clipboard.SetText(Clipboard.GetText());
こちらのコードでコピーを行うと、セルの書式に「折り返して全体を表示っする」が設定されないため、
クリップボードへコピーされる文字の内容が原因ではなく、
DataGridが内部で行っているClipboard.SetTextを行った際に、
なにかしら設定されているのではないかと思っています。
一度テキストエディタに貼り付けてコピーし直せば書式は外れますので、それで一度確かめてもらえますか?
もちろん、おっしゃる通りテキストエディタにコピーすれば書式は外れます。
しかし、私が行いたいのはDataGridでCtrl+Cを押したら、
直接Excelに張り付けても折り返しせずに貼り付けるようにしたいのです。
書式を外したら折り返ししないかどうかを確認してください。
そのお返事をいただいていません。
大変失礼いたしました。
「書式を外したら折り返ししないかどうか確認」
の方法は以下で合っていますか?
DataGridでCtrl+C → テキストエディタに貼り付け
→貼り付けたテキストをクリップボードにコピー
→エクセルに貼り付け
上記手順を行うと、折り返しはしません。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。