2012-02-10 6 views
1

私たちのSilverlightページでは、コンボボックスの値が異なります。選択すると、折りたたまれたコンボボックスに収まらないほどの値があります。コンボボックスで選択した値を省略するにはどうすればいいですか?

enter image description here

私はそれが(最終的には3つの点で、 "システムの使用を...")ellipsiseしたいと思います。

ドロップダウンで値の完全な名前を見ることができますが、折りたたまれたときには選択した値を省略したいと思います。ドロップダウンは一般的に、倒れたコントロールよりも多くのスペースを提供しますが、これを行うための明白な方法を見つけることはできません。

答えて

1

http://www.codeproject.com/Articles/37503/Auto-Ellipsisを参照してください。 Zenexarの提案と似ていますが、一般的なケースではより効率的な削減アルゴリズムを使用しています。しかし、他のタイプの「楕円形」についても書いています。おそらくあなたのニーズに合っているかもしれません。

+0

これは反復の複雑さとテキストの測定の両方を考慮に入れて、よく考えられたアプローチなので、私はこれを最善の答えとしています。 – JOG

0

選択したアイテムの長さを確認するのが最善の方法だと思います。長さが所定の文字長を超える場合は、残りの部分を切り取り、3つのピリオドを追加します。

+0

実際に文字のピクセルの長さをカウントすることをお勧めしますか? – JOG

+0

私は彼がピクセルの長さを数えることを提案しているとは思わない。私は彼が文字の長さに基づいて近似を得ることを提案していると思う。 – Zenexer

1

選択したUIElementを取得します。 RenderedWidthとRenderedHeightをDesiredSizeと比較します。後者は、要素がどのように切り捨てられているかに基づいて調整されます。 DesiredSizeがRenderedWidth/RenderedHeight以下になるまで、繰り返し文字を削除し、省略記号を付加し、レイアウトを無効にします。

+0

+1、参考になりましたが、私は何かより明白で少ない修正が望まれます。 – JOG

+0

私はシルバーライトに慣れていませんし、データソース(文字列?)を直接操作することを提案しているのかどうかは分かりませんが、そうであれば、動的にサイズを変更するコントロールで作業しているときに少し混乱するようです。特にそれを小さくして大きくすると、ドロップされた文字は消えてしまいますか? – Xilconic

関連する問題