代码之家  ›  专栏  ›  技术社区  ›  Wallstreet Programmer

编号列表框

  •  22
  • Wallstreet Programmer  · 技术社区  · 15 年前

    我有一个排序的列表框,需要显示每个项目的行号。在这个演示中,我有一个带有名称字符串属性的Person类。列表框显示按姓名排序的人员列表。如何将行号添加到列表框的datatemplate???

    <Window x:Class="NumberedListBox.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="300" Width="300">
        <ListBox 
            ItemsSource="{Binding Path=PersonsListCollectionView}" 
            HorizontalContentAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Name}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Window>
    

    代码隐藏:

    using System;
    using System.Collections.ObjectModel;
    using System.Windows.Data;
    using System.Windows;
    using System.ComponentModel;
    
    namespace NumberedListBox
    {
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
    
                Persons = new ObservableCollection<Person>();
                Persons.Add(new Person() { Name = "Sally"});
                Persons.Add(new Person() { Name = "Bob" });
                Persons.Add(new Person() { Name = "Joe" });
                Persons.Add(new Person() { Name = "Mary" });
    
                PersonsListCollectionView = new ListCollectionView(Persons);
                PersonsListCollectionView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
    
                DataContext = this;
            }
    
            public ObservableCollection<Person> Persons { get; private set; }
            public ListCollectionView PersonsListCollectionView { get; private set; }
        }
    
        public class Person
        {
            public string Name { get; set; }
        }
    }
    
    5 回复  |  直到 12 年前