2009-05-11 16 views
0

私は多くのラベルを持つWPFのチャートを持っています。これらのラベルのテキストは動的に読み込まれ、変更される可能性があります。幅をautoに設定すると、これらのラベルが重なってテキストが判読できなくなることがあります。ラベルのサイズ変更

グラフは複数のサイズをサポートしているため、サイズが大きくなると、バーのサイズが変更され、テキストのスペースが増えます。今私は利用可能なスペースにテキストを調整したい。それが小さすぎると、私はもはやラベルを表示したくない(ツールチップが利用できるので、ユーザーは依然として必要な情報を取得する)。 "Case 1、blah blah"という文字列を考えてみると、文字列全体を表示するにはスペースが不足している可能性があります。このケースでは、文字列を "Case 1 .."にして、ツールチップにさらに情報があることを示します。

文字列に使用できる長さを判断できます。しかし、どのようにして1通の手紙が取るスペースを決めることができますか?もちろん、ラベルのサイズを変更することもできますが、ユーザーにとってはあまり役に立たない文字列を切り捨てるだけです(醜いように見えます)。

アイデア?

答えて

1

ラベルの代わりにTextBlocksを使用できる場合は、TextTrimmingプロパティを使用します。このプロパティは、最も近い文字または最も近い単語のいずれかに対応します。


あなたはTextTrimmingプロパティで幸せなようだが、私は、TextBoxコントロールは、限り、あなたは、1つまたは複数の文字の画面上のサイズを見つけることができるでしょうGetRectFromCharacterIndex方法を持っていることを追加するために、これを編集しますフォント設定があなたのラベルと一致しました。これは、最も近い文字/単語ではなくラベルの特定の場所でトリミングする場合に便利です。

+0

私はTextTrimmingが私が探していたものだと思っています:) – Nils

0

WPFの専門家ではありませんが、XAMLではなくコードでこれを行う必要があると思います。

まず、テキストで使用可能なスペースの実際のピクセル幅を取得します。 次に、XAMLフロントエンドで使用される文字セット、ドットピッチなどを見て、1文字あたりに必要なピクセル幅を計算します。

文字のサイズを変更したり、ラベルの長さを減らすこともできます。

+0

答えはありますが、複雑すぎる文字列は、TextTrimmingプロパティを見てください(下記参照) – Nils

関連する問題