我有一个自动编号的ListBox,如下所示。我想格式化每个ListBoxItem前面的数字,以便所有行中的数字彼此正确对齐。我想我可以使用项目计数来确定索引中有多少个字符,使用该信息在我的viewmodel中设置格式,并绑定到它。不幸的是,我甚至没有想出如何为我的数字格式化恒定的字段宽度。 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>
答案 0 :(得分:0)
您的Profile
类型应具有某种Index
属性,您应该设置该属性。 AlternationCount
“使交替的容器具有独特的外观,”所以我相信你没有正确使用它。当您将该属性添加到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>