2017-01-05 9 views
0

私は、WinFormHostを使用してWPFアプリケーションでWindowsフォームコントロール、つまりDataGridViewを使用しています。今の問題は、DataGridViewはWPF Scrollviewerコントロールの中にあるため、DataGridViewのデータとその高さが自動的に増加するたびに、常にスクロールするか、あまりにも長くなるとすべてのWPFコントロールにオーバーラップします。どうしたらいいですか、ZIndexも試しましたが、動作しませんでした。WindowsForm DataGridViewオーバーラップWPFコントロール

Without Overlap

Overlapping

答えて

1

の下の図に示すように、非WPFビジュアル・コンポーネントをホストしているとき、これはWPFにおける周知の問題です。これは、ホストされたコンポーネントがWPFビジュアルツリーとは別にレンダリングする専用のウィンドウハンドルを受け取ることによって発生します。 S 1 "だけWPFに移動し、sのデータグリッドコントロールの今WinFormを使用するための特別な理由がある場合には、WPFのデータグリッドへ

  1. 移動:

    はここにあなたの問題を修正するためのいくつかのオプションですそれはあなたのすべての問題を解決します。

  2. 可能な回避策/ハックユーザがスクロールバー(またはWPFフォーム上の他の関連する構成要素)と相互作用するときWinFormsグリッドをWPF形態における透明な領域を作成して操作することが可能かもしれません。それは醜くて複雑ですが、うまくいくかもしれません。
  3. WPFのスクロールバーに頼るのではなく、WinFormsのデータグリッドスクロールバーを使用して、ユーザーにWinFormsデータグリッドのものと対話させるだけです。
+0

ご意見ありがとうございますが、すべてを試しました。 WinForm DataGridViewを使用しているのは、DataGridのすべての値を出力し、Excelに書き出すコードを記述できるからです。しかし、WPF DataGridを使ってすべてのことをやり遂げる方法があれば、どうぞよろしくお願いいたします。 –

+0

行を表す 'class'を使用して、そのクラスのインスタンスで' ObservableCollection'を埋め、それを 'DataGrid'にバインドする必要があります。 'Excel'へのエクスポートに関しては、' csv'ファイルを使用している場合は 'class'の各インスタンスの値を連結してファイルに書き出しますが、' xlsx'ファイルが必要な場合は'office' APIの1つを使って' class'インスタンスを 'Excel'にエクスポートする必要があります。 –

+0

私はWPF DataGridを使うことができますが、あなたが話しているAPIは、私はそのAPIについて知りません。お手伝いができたら、感謝します...ありがとう... –

関連する問題