0

我将数据网格绑定到 ObservableCollection。其中一列绑定到对象本身,而不是属性之一:

    <sdk:DataGrid
        ItemsSource="{Binding PersonList}"
        AutoGenerateColumns="False">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn
                Binding="{Binding}"
                Header="Person"
                SortMemberPath="FirstName"
                />
            <sdk:DataGridTextColumn
                Binding="{Binding FirstName }"
                Header="FirstName"
                />
            <sdk:DataGridTextColumn
                Binding="{Binding LastName }"
                Header="LastName"
                />
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>

我想让绑定到对象本身的列可排序。我认为让 Person 类实现 IComparable 就足够了。但似乎这还不够:

public class Person : IComparable<Person>
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public override string ToString()
    {
        return string.Format("{0} {1}", FirstName, LastName);
    }

    public int CompareTo(Person other)
    {
        return FirstName.CompareTo(other.FirstName);
    }
}
4

1 回答 1

0

试试这个,你不必为排序创建单独的列,

<sdk:DataGrid
        ItemsSource="{Binding PersonList}"
        AutoGenerateColumns="False">
        <sdk:DataGrid.Columns>

            <sdk:DataGridTextColumn
                Binding="{Binding FirstName }"
                Header="FirstName"
                 CanUserSort="True"
                />
            <sdk:DataGridTextColumn
                Binding="{Binding LastName }"
                Header="LastName"
                />
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>
于 2013-08-23T07:10:06.367 回答