スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

DataGridCellにツールチップ(Tooltip)を(壱)

WPF4でアプリ開発を始めて、少し経った頃の話。

後輩:ちょっと良いっすか。
俺:だめ。
後輩:DataGridって、列幅を狭めるとセルの中身が一部しか見えなくなるじゃないっすか。
俺:聞けよ。まあ、そうだね。
後輩:そういうときって、ツールチップ出せないっすか?
俺:ああー、ツールチップかー。まあちょっと調べようか。


列いっぱい(40~50)、文字列いっぱい(最大500文字)のデータをDataGridに表示する時、内容を参照するために逐一列を広げるのはめんどくさい。確かに欲しいよなぁと思いながら、やっぱりここだよね!とStackOverflowを調べる。

俺:これなんかどうっす?
後輩:どうっす?おお。とりあえず使ってみるっす。

しばらくして、後輩が再び来襲。

後輩:先輩、さっきの奴、ちょっと駄目っすね。
俺:ちょっと駄目っすか。
後輩:ええ。こいつ、DataGridTemplateColumnで使うと、ツールチップが出ないっすね。後、中身が空でもToolTipが出るっすよ。
俺:出てるっすね。
後輩:空の時、(ツールチップ)いらないっすよね?ええ、いらないです。というわけで、どうにかしてほしいっす。
俺:それ、「ちょっと」じゃないだろ。

しかし、調べても良い情報が出てこない。やっぱり上の記事が一番使えそうだった。仕方ないので、上の記事から発展させることにした。
課題は二点。
〇DataGridTemplateColumnでは使えない。
 DataGridTemplateColumn以外は、何とかなりそうなのに。 確かに、DataTemplateは、その気さえあれば、いくつものコントロールを組み合わせられるので、どこから値を取得して良いかはわからない。そこで、Converterを使って、ToolTipに表示する文字列を取得する事にした。手順はこんな感じ。
1.ToolTip対象のDataGridCellにバインドされるプロパティ名を取得する。
  列のソートに必要な、SortMemberPathプロパティ名が設定されていれば、それを使う。なければ、Binding情報から取得する事にしよう。
2.取得したプロパティ名から値を取得する。
 Bindingが使っている、TypeDescriptorを使って取得することにした。結局中身はReflectionかな。

〇セルの中身が空でもToolTipが出てくる。
 セルの中身が空かどうかなんて意識していないし、Visibiityプロパティに何も設定していない。
 セルに表示される内容を取得できたら、後はそれをVisibilityに変えるだけなので、上の課題をクリアできたら何とかなるか。

続く
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

DataGridのコピー機能が、日本語限定でバグってる(四)

コピー元情報をもとに、クリップボードへ文字列を設定する。 とりあえず、Text形式とHTML形式だけサポートする。
Text形式は元のままを使えば良いし、HTML形式も、一部(バイト数なのに文字数を渡している)箇所を修正すればいい。
DataGridからコピーする際のイベントデータ用クラスとして、DataGridRowClipboardEventArgsクラスがあるので、これを使う。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

DataGridのコピー機能が、日本語限定でバグってる(参)

コピー元となる範囲(行と列)を把握する必要がある。DataGridコントロールから提供されるのは、SelectedCellsというセル単位の情報なので、これを行(Item)と列の情報に変換する。後々使うこともありそうなので、クラスと拡張メソッドを実装する。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

DataGridのコピー機能が、日本語限定でバグってる(弐)

前回からの続きで再開。日本語を含む文字列をコピーする際の処理を、自前のロジックに置き換える必要がある。
続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

DataGridのコピー機能が、日本語限定でバグってる(壱)

 もう長い間開発を続けていたアプリケーションが、新たなユーザーにリリースされた。利用する部署が格段に増えたので、当然ながら問合せも増える。その中の一つに不可解な不具合報告があった。
リスト(DataGrid)からデータをコピーして、Excelに貼り付けたらなんかおかしい
なんかおかしいって…と思いつつ、確認作業をしてみたら、確かになんかおかしい。
 最後まで貼り付けしてくれない感じで、例えば、7行コピーしてExcelに貼り付けても、6行ちょっとしか貼り付けない。しかし、テキストファイルに貼り付ける分には、特に異常がない。なんぞこれは。というので調査することになった。しかし、貼り付け機能はともかく、コピー機能なんてWPF標準の機能として存在するので、それに任せっきりだったなぁ。
 で、調査した結果、コピーする範囲に日本語を含んでいる時におかしくなるようだった。DataGridのソースコードまで探しだして調査する羽目になった。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。