需要在 WPF ListBox 中格式化自动编号的行

Need to format automatically numbered rows in WPF ListBox

我设置了一个带有自动编号的列表框,如下所示。我想格式化每个 ListBoxItem 前面的数字,以便所有行中的数字彼此右对齐。我想我可以使用项目计数来确定索引中有多少个字符,使用该信息在我的视图模型中设置格式,并绑定到它。不幸的是,我什至没有想出如何为我的数字格式化一个恒定的字段宽度。排列好内容后,ListBox 看起来会好很多。所以我需要知道如何设置格式以便我可以绑定它。

            <ListBox ItemsSource="{Binding Profiles}" SelectedItem="{Binding SelectedProfile, Mode=TwoWay}"
                     AlternationCount="{Binding Path=Profiles.Count}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="0,0,5,0"
                                Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplatedParent.(ItemsControl.AlternationIndex)}"/>
                            <TextBlock Text="{Binding}" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

您的 Profile 类型应该有某种类型的 Index 属性,您应该设置它。 AlternationCount "enables alternating containers to have a unique appearance," 所以我相信你没有正确使用它。当您将 属性 添加到您的 Profile 类型时,您可以为您的 ItemTemplate 做一些事情,例如:

<DataTemplate>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100">
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBlock HorizontalAlignment="Right"
                   Margin="0 0 5 0"
                   Grid.Column="0"
                   Text="{Binding Index}"/>
        <TextBlock Grid.Column="1"
                   Text="{Binding}" />
    </Grid>
</DataTemplate>