分别向 ListBox 提供两条数据,并使用数据模板。就是这样。
首先,创建一个小类来表示您要插入的每个项目:
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" },
};
同样,这个集合可能已经存在于您的应用程序中。
第三,创建一个指定所需布局的 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 列被迫相应增长。