ListBox の幅を明示的に設定しない場合、その幅は、最も幅の広い表示項目の幅に自動的に設定されます。これは、上下にスクロールし、最も幅の広い表示データ項目が変化すると、リストボックス自体の幅が増減することを意味します。
では、リスト内の最も幅の広い項目の幅を見つけて、ListBox の幅をそれに設定する最良の方法は何でしょうか? ListBox のデータ テンプレートは、CheckBox と TextBlock を含む StackPanel であるため、明らかに Textblock の幅はその中の文字列の長さによって異なります。
SO には既にいくつかの提案があり、「推測する」から「テキスト サイズを測定する」までの範囲の回答があります (UI 要素に配置せずに SL でテキスト サイズを測定するにはどうすればよいでしょうか?)。
誰か私にいくつかのアイデアを投げてもらえますか? 必要に応じて、すべてのデータ テンプレート インスタンスを反復処理しますが、より長い文字列を見つけてそこから計算する方がよい場合があります。