ListBox に 2 つのデータを別々にフィードし、データ テンプレートを使用します。方法は次のとおりです。
まず、挿入する各アイテムを表す小さなクラスを作成します。
public class WordPair {
public string First { get; set; }
public string Second { get; set; }
}
(おそらく、アプリケーションに適切なクラスやコレクションがすでにあるはずです。これらの文字列のペアは、どこかから来ていると思います!)
次に、ListBox.ItemsSource を次のコレクションに設定します。
listBox.ItemsSource = new List<WordPair> {
new WordPair { First = "ITEM A", Second = "ITEM B" },
new WordPair { First = "ITEM X", Second = "ITEM Y" },
};
繰り返しますが、このコレクションは既にアプリに存在している可能性があります。
3 番目に、目的のレイアウトを指定する DataTemplate を作成し、それを ListBox.ItemTemplate に割り当てます。
<!-- in your Window.Resources section -->
<DataTemplate x:Key="AlignedPairs">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding First}" Grid.Column="0" />
<TextBlock Text="->" TextAlignment="Center" Grid.Column="1" />
<TextBlock Text="{Binding Second}" TextAlignment="Right" Grid.Column="2" />
</Grid>
</DataTemplate>
<ListBox Name="listBox" ItemTemplate="{StaticResource AlignedPairs}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
(アイテムに必要な正確な配置を推測しましたが、明らかに微調整できます。)
また、ListBox.ItemContainerStyle を使用して、ListBoxItems の HorizontalContentAlignment を Stretch に設定する必要があることに注意してください。そうしないと、各 ListBoxItem が必要なスペースだけを占有するため、すべての Grid 列が最小サイズになり、まっすぐに連結されたように見えます。Stretch は、各 ListBoxItem が全幅を埋めるようにするため、それに応じて Grid 列が強制的に拡大されます。