SortDescription绑定到显式接口实现

时间:2010-11-03 18:25:37

标签: c# wpf wpftoolkit

我有一个界面

public interface IProperty
{
    string Name { get; }
}

及其明确的实施

public class Parameter : IProperty
{
    private readonly string m_name;

    public Parameter(string name) { m_name = name; }

    string IProperty.Name { get { return m_name; } }
}

我有 DataGrid ,显示 ObservableCollection< IProperty> 。唯一的列,即 DataGridTextColumn 是通过属性 SortMemberPath =“(这个:IProperty.Name)”对行进行排序(我明白了绑定到显式成员来自this forum thread的实现。

所以问题是:如何排序默认行?我试图在窗口构造函数中执行此操作:

var sortDescription = new SortDescription("(this:IProperty.Name)", ListSortDirection.Ascending);
m_dataGrid.Items.SortDescriptions.Add(sortDescription);

几乎没有运气。效果是:

  • 行以某种未指定的顺序排序
  • 我在Visual Studio输出窗口中遇到很多错误:
    System.Windows.Data错误:39:BindingExpression路径错误:'object'''参数'(HashCode = 25584554)'上找不到'(this:IProperty.Name)'属性。空
  • 最有趣的是:当我在查看集合后应用任何过滤(CollectionView.Filter)时,行会神奇地开始正确排序!

有没有人知道为什么行从一开始就没有正确排序?
如果重要的话,我的目标是.NET Framework v3.5

1 个答案:

答案 0 :(得分:1)

您应该将ListCollectionView用作DataGrid的CollectionView。然后通过ListCollectionView.CustomSort配置排序逻辑。请参见示例here