26

これは比較的簡単な質問です。

これを使用して、省略記号でテキストをトリミングできます。

<TextBlock Text="{Binding}" TextTrimming="CharacterEllipsis"/>

それは私に次のようなものを与えるでしょう:

「この文は長すぎます」

=>

「この文私は...」

それはすべて素晴らしくてダンディですが、私が実際に欲しいのはこれです:

「この文...:」/「この文...:」

私が探しているのは、楕円の後のコロンです。これを達成する簡単な方法はありますか?

編集:

混乱させて申し訳ありません。

デフォルトの省略記号文字列を「...」から「...:」に変更したいと思います。同様に、テキスト文字列自体にコロンを含めます。このように、私は常にコロンを表示します。同様に、すべてがすべての状況で1行にある必要があります。

許容できる結果は次のとおりです。

十分に短い:

あまりにもl...:

4

3 に答える 3

29

これは機能しますが、コロンが常に表示されるように、パディングを追加する必要がありました。

<TextBlock Padding="0,0,5,0" >
    <TextBlock TextTrimming="CharacterEllipsis">Lorem ipsum dolor sit amet, consectetur adipisicing </TextBlock>
    <TextBlock>:</TextBlock>
</TextBlock>
于 2012-03-09T17:41:44.893 に答える
2

最初の省略記号の例と2番目のコロンの例で2つのTextBlockを使用します。

アップデート:

これは比較的単純な質問であり、複雑な問題がたくさんあるようです。

1つはいくつかのTextBlockを持ち、最初はターゲットテキストを含み、別の2つは「:」と「...:」を表示し、最初のTextBlockにすべてを表示するのに十分なスペースがあるかどうかに基づいて可視性値コンバーターで切り替えたいと思うかもしれません。そのテキストの。これには可能性がありますが、不安定なレイアウトになる可能性があります。

カスタムパネルを実装したばかりで、上記の3つのTextBlockである3つの子を保持するように設計されたものを含む可能な解決策を想像できます。

Panelから継承されたカスタムパネルは、MeasureとArrangeの2つの主要なメソッドをオーバーライドする必要があります。

測定方法では、すべての子を測定する必要があります。

アレンジ方法では、最初の2人の子供を表示するのに十分なスペースがあるかどうかを確認し、そうであれば、それらを並べて配置します。十分なスペースがない場合は、最初の子を3番目の子の部屋を表示して、3番目の子を右揃えに設定できるサイズの最初の子を表示します。

アップデート:

カスタムパネルを試してみましたが、最初のTextBoxが部分的な文字のクリップである以外は機能しました。

クリーンなフォーマットの究極の解決策は、適切な接尾辞が適用された割り当てられたスペース内に収まるまで表示文字列を調整する方法です。

于 2012-03-09T08:55:33.350 に答える
0

文字列にコロンを含めない場合は、次を使用できますBinding.StringFormat

<TextBlock Text="{Binding, StringFormat={}{0}:}" TextTrimming="CharacterEllipsis"/>

(これは非常に古い質問だと思いますが、たまたまつまずいたので、フォローしている他の人のためにこれを投げると思いました。)

于 2020-12-03T01:12:18.017 に答える