【问题标题】:silverlight datagrid: sorting column bound to an objectsilverlight datagrid:绑定到对象的排序列
【发布时间】:2013-08-26 02:40:44
【问题描述】:

我将数据网格绑定到 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);
    }
}

【问题讨论】:

    标签: c# .net silverlight xaml datagrid


    【解决方案1】:

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

    <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>
    

    【讨论】:

    • 其实我贴的代码只是一个例子,没有任何意义。真实场景过于复杂,无法发布,因此我将其简化为这个示例。在实际场景中,我有一个绑定到整个对象的列(不仅仅是对象的属性),我想根据类的 CompareTo 方法中实现的一些逻辑对该列进行排序。跨度>
    猜你喜欢
    • 2023-04-09
    • 2015-01-16
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2011-08-22
    • 1970-01-01
    相关资源
    最近更新 更多