私の WPF ビューには TextBlock 要素があり、ビュー モデルの文字列プロパティにデータ バインドされています。このプロパティのテキストは少し長くなる可能性があるため、1 行で表示されるようにトリミングする必要があります。レイアウトを変更してはならないため、複数の行を使用することは避けなければなりません。また、データ バインディング ソースは変更せず、単一の文字列のままにする必要があります。表示されるテキストは、次の例のようになります。
- XY のオブジェクト
- ABC の別のオブジェクト
- 3 つの宣伝文句オブジェクト (XY、ABC、DEF)
- 20 個の素晴らしいオブジェクト (XY #1、#2、ABC #2、#3、DEF、GHI など)
簡単な解決策は次のとおりです。
<TextBlock Text="{Binding PageTitle}" TextTrimming="CharacterEllipsis"/>
これは最初の 2 つのサンプル テキストでは問題なく機能しますが、最後の 2 つのサンプルでは、閉じ括弧を表示したままにしておきたいと思います。だから私が現在得ているのはこれです:
- 20 個の素晴らしいオブジェクト (XY #1、#2、ABC #2、#3、DEF...
しかし、私が求めているのはこれです:
- 20 個の素晴らしいオブジェクト (XY #1、#2、ABC #2、#3、DEF... )
WPFでそれを行う簡単な方法はありますか? 基本的に、省略記号文字列は常に 3 つのドット (視覚的には Unicode 文字である可能性もあります) であり、ソース文字列に含まれる終了句読点をすべて含める必要があります。
必要に応じてカスタム コントロールを作成することもできますが、トリミングの実装についても助けが必要です。