0

多くのラベルが付いた WPF のグラフがあります。これらのラベルのテキストは動的に読み込まれ、変更される可能性があります。幅を自動に設定すると、これらのラベルが重なってテキストが読めなくなる可能性があります。

グラフは複数のサイズをサポートしているため、グラフが大きくなると、バーのサイズが変更され、テキスト用のスペースが増えます。今、利用可能なスペースに合わせてテキストを調整したいと考えています。ラベルが小さすぎる場合は、もうラベルを表示したくありません (ツールチップが利用できるので、ユーザーは必要な情報を取得できます)。文字列 "Case 1, blah blah" を考えてみましょう。文字列全体を表示するには十分なスペースがなく、最初の単語だけが表示される可能性があります。この場合、文字列を「Case 1..」とし、.. はツールチップにさらに情報があることを示します。

文字列に使用できる長さを判断できます。しかし、1 文字が占めるスペースをどのように決定すればよいでしょうか? もちろん、ラベルのサイズを変更することもできますが、おそらくユーザーにとって役に立たない場所で文字列が切り取られるだけです (そして見苦しくなります)。

何か案は?

4

2 に答える 2

1

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


TextTrimming プロパティに満足しているようですが、これを編集して、TextBox コントロールにGetRectFromCharacterIndexメソッドがあり、フォント設定がラベルと一致している限り、1 つまたは複数の文字の画面上のサイズを確認できることを追加します。これは、最も近い文字/単語ではなく、ラベルの特定の場所でトリミングしたい場合に便利です。

于 2009-05-11T11:53:36.147 に答える
0

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

テキストに使用できるスペースの実際のピクセル幅を取得することから始めます。次に、XAML フロント エンドで使用される文字セット、ドット ピッチなどを調べ、そこから文字ごとに必要なピクセル幅を計算します。

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

于 2009-05-11T11:41:09.557 に答える