トップ回答者
ListBoxItem の表示位置を RenderTransform で設定した際の選択処理

質問
-
Listbox の ItemsPanelTemplate を Canvas に変更して、Item を、任意の位置に表示するアプリを実装しています。
※↓こちらの質問の続きです。結局選択処理が必要になったので、ItemsControlではなく、Listboxを使ってます。
http://social.msdn.microsoft.com/Forums/ja-JP/wpfja/thread/b43f2db9-b985-47e5-a00a-f69b432993cf
ListBox の Item の表示位置は、各Item の RenderTransform で指定しました。
Item自体は RenderTransform で指定した位置に描画されますが、Item選択の HitTest は、Canvasの添付プロパティ(Left/Top)で行われているらしく、RenderTransform で画面上に表示されているItemをクリックしても選択されません。
Left/Top がデフォルトで(0,0)なので、何も表示されていない左上をクリックすると選択されます。
回転や拡大縮小なども指定したいので、できれば RenderTransform で表示位置を指定し、表示している位置をクリックしてListBoxItemを選択したいのですが、ListBoxItem選択処理をカスタマイズする方法はありますでしょうか。
よろしくお願いします。
回答
-
コネクトの以下の報告が該当するように思います。
HitTest is buggy / not accurate for transformed (scaled etc.) visuals
https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=309161&SiteID=212
ちなみにVS2010 RCで試してみましたが、改善されていませんでした。RTMでは直っているといいのですが・・・
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク NIM5 2010年2月16日 4:40
すべての返信
-
コネクトの以下の報告が該当するように思います。
HitTest is buggy / not accurate for transformed (scaled etc.) visuals
https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=309161&SiteID=212
ちなみにVS2010 RCで試してみましたが、改善されていませんでした。RTMでは直っているといいのですが・・・
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク NIM5 2010年2月16日 4:40
-
Hongliangさん、trapemiyaさん
早速の返信ありがとうございました。
>Hongliangさん。
おっしゃるとおり、DataTemplate内の要素にRenderTransformを指定していました。
ListBoxItem の Style に設定した所、Itemの選択状態も含めてTransformできました。
ありがとうございます。
ExpresionBlend SDK のMouseDragElementBehavior を使いたい所ですが、ListBoxItem の Styleでビヘイビアを追加する書式が分からなかったので、自前で記述してうまくいきました。
Styleでビヘイビアを設定する方法ってあるんでしょうか?
>trapemiyaさん。
貴重な情報ありがとうございます。
今回の件と関係あるかわかりませんが、かなり気になる障害ですね・・・