こんなタイトルだったっけ・・・?
[WPF] DataGridのComboBoxやCheckBoxを1クリックで操作する
今頃WPFの話です。
以前からWPFに興味は合ったものの、どうにも良くわからなくて放置してたのですが、仕事でWPFを触る機会があって、それでちょっと覚えたので
個人的に使ってる自作ツール(C#2.0で当然Windows.Formで作成)をWPF化しようとしています。
で、前バージョンではDataGridViewを使っていて、セルのタイプがCheckBoxやComboBoxタイプだと1クリック目で編集可能状態、2クリック目で編集っていう2クリックの操作が必要になるんですね。
で、1クリックで操作したい場合、DataGridView.CellEnterイベントで目的のセルだった場合にDataGridView.BeginEdit(false);とかすると、目的を達成できます。
で、WPFではDataGridコントロールを使う訳ですが、DataGridViewと同様に編集するのに2クリック必要なんですね。
でもCellEnterに相当するイベントは見当たらないので同じ方法は使えないっぽい。
で、ググって出てくる日本語のサイトだと、DataGridTemplateColumn使ってUpdateSourceTriggerにPropertyChangedとか指定してる方法が見つかるんだけど、
ソレとは別の方法が海外サイトにあって、自分のケースではソッチのほうが合ってたのでちょっと改良してみた。きっと忘れるから未来の自分へのメモ。
<Style TargetType="DataGridCell"> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True" /> <Condition Property="IsReadOnly" Value="False" /> </MultiTrigger.Conditions> <Setter Property="IsEditing" Value="True" /> </MultiTrigger> </Style.Triggers> </Style>
これをWindow.Resources要素の中で定義するだけ。
元のコードはTriggerでIsMouseOverがTrueの場合にIsEdittingの設定するだけだったけど、それだとIsReadOnly無視して編集できちゃうのでMultiTriggerにしてみた。
これなら普通にDataGridComboBoxColumnやDataGridCheckBoxColumn使えるので楽ちん。
あ、件の自作ツールは公開することは無いです。こんなん公開できねぇ・・・
類似画像検索ツールのWPF化は・・・需要ないだろうしなぁ。
ん~?
WordPressのプラグインで試しにQuick Cacheを導入してみたら、デザインが崩れました。CSSが全く効いてないっぽい。
プラグイン外しても状況変わらず。
つかQuick Cacheアンインストール失敗する。質悪いなぁ。
どうもテーマが壊れたっぽい。壊れるってどういうことよ。
テーマ変えたらちゃんと反映されるので、とりあえずこのテーマで暫く運用。シンプルだし。
とうとうウチが白くなった・・・。
あ、LiteboxもLazyLoadも効いてない。いつからだ?
Wordpress4に上げたのがまずかったかなぁ・・・
追記
いつの間にか直った。何もしてない。ホントに何もせずに自動で直ってた。そんなバカな。
前のテーマも普通に動いたけど、とりあえずこのシンプルなデザインで暫く運用してみよう。
Quick Cacheのアンインストールに関しては、Quick Cacheのuninstall.phpの要求するPHPのバージョンがさくらインターネットで設定してたバージョンより高いのが原因っぽい気がする。
アンインストーラ程度でそんな高バージョンいらんだろ・・・
とりあえずPHPバージョン上げてみたら削除できた。
買い物
艦隊これくしょん ‐艦これ‐ 艦娘型録 (カドカワデジタルコミックス)
カドカワ祭りで書籍の定価の1/10以下なので買っちゃう
追記
あー、これ例の値付けミスだったのか。そうだよなぁ。さすがに安すぎだよなぁ。
うは、ラッキー。
ホントは技術書も欲しかったんだけど、あんまし欲しい本無いんだよね。KADOKAWAって。
つか、アスキーブランドの編集部解散させるんだっけ。
IT系技術書の売上げが落ちてるからだとか。
まー、IT系技術はググればほしい情報は大抵見つかるからなぁ。
でも日本語で読みやすくて、取っ掛かりとかリファレンス的なものは実はあまり見つからない事が結構あるので、IT系技術書が減るのはちょっと困るなぁ。
特に今後日本語のドキュメントって減ってくだろうし。公式のJavaDocとかMSDNがいつまで日本語版出してくれるかわからんもんね・・・
ってわけで、カドカワ祭りで艦これのアンソロ買いあさった。
あとラノベ。
Adobe EdgeがJQuery使ったコードの邪魔をする
久しぶりに技術系エントリー。つっても大した内容ではない。
うちのクライアントのWEBサイトのFlashコンテンツを徐々にHTML5化して行ってるのですが、オーサリングソフトはAdobe Edge Animate(CC 2014)使ってます。
で、このEdgeアニメはライブラリとしてJQuery使ってるんですが、Edgeアニメとは関係ない部分でJQueryを同ページ内で使うと変にEdgeアニメが変に干渉して上手く動かない場合があります。
たまに動いたり動かなかったり。
たぶん$().readyだか$().loadだかでEdgeアニメのデータ読み込むのに時間が掛かってて、それでなにかしら問題発生してるとか・・・よく分からんけど。
色々調べたけど理想的な解決方法は結局見つからなくて、
・Edgeアニメ使うの止める
・EdgeアニメじゃないほうのコードでjQuery使うの止める
の2択しかないかなぁと。