Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



[2010年07月07日]

アホやった

2010年07月08日 07:28更新 筆者:K.Ktouth

昨日必至に悩んだ事に、いつもの「問題点を日記等にしてから半日も経たずに自己解決」というアホな展開が待ってました(笑)

結局、昨日悩んだところを全部書き直したら、あっさり解決したんですな。

  • これ以上上に行かないという状況で「上に移動」ボタンを使ったら選択解除、ボタン使用不可になる

選択解除は自前で作っていたコレクションクラスの仕様ミスが一つ、および ObserbableCollection<T> に切り替えた後にも「ボタン解除」が発生した理由はどうも list.Mode(oldIndex, newIndex); の新旧のインデックスが同じ場合に項目の差し替え(結果的にないよう同じ)が発生していた模様。きちんと if 文で場合分けしたら治りました。無精しちゃ行けないって事やね(笑)

  • 移動の選択項目が常に表示されているとはならない

コンテナオブジェクトに触れない云々……とか面倒なことを考えていましたが、よくよく考えれば ListBox.ScroolIntoView(object) メソッドが要求するのはコンテナじゃなく項目の内容なので、そもそもコンテナを検索する必要性すらなかった(笑)

  • 各項目のListBoxItemの長さがまちまち

定番の解決方法としては ListBoxItem.HorizontalContentAlignment に Stretch を指定すると言うものですが。もちろん ListBoxItem や 内部コンテンツも最大幅で表示されること前提です。
今回のように横幅が ListBox 自体より大きくなる場合があると、表示されていない部分の長さがまちまちになり、横スクロールなどで、そのことが露見します。
これを解決方法は ListBox の ScrollViewer.CanContentScroll 添付プロパティを false に設定する事です。

本日のリンク元
アンテナ
その他のリンク元
検索