我有一个接口(interface)
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; } }
}
我有一个显示 ObservableCollection
所以问题是:如何进行默认行排序?我试图在窗口构造函数中执行此操作:
var sortDescription = new SortDescription("(this:IProperty.Name)", ListSortDirection.Ascending);
m_dataGrid.Items.SortDescriptions.Add(sortDescription);
几乎没有运气。效果是:
- 行以某种未指定的顺序排序
- 我在 Visual Studio 输出窗口中收到很多错误:
System.Windows.Data 错误:39:BindingExpression 路径错误:在“对象”“参数”(HashCode=25584554) 上找不到“(this:IProperty.Name)”属性。空 - 最有趣的是:当我在查看集合后应用任何过滤 (CollectionView.Filter) 时 - 行神奇地开始正确排序!
有人知道为什么行从一开始就没有正确排序吗?
如果重要的话,我的目标是 .NET Framework v3.5
最佳答案
您应该使用 ListCollectionView
作为 DataGrid 的 CollectionView
。然后通过ListCollectionView.CustomSort配置排序逻辑.查看示例 here .
关于c# - 绑定(bind)到显式接口(interface)实现的 SortDescription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090309/