0

我在 Visual Studio 2010 (C#) Silverlight 4 项目中遇到以下情况DataGrid(为了简洁起见,这是伪代码):

public class BaseClass {
    public string str1;
    public string str2;
}

public class DerivedClass : BaseClass {
    public string str3;
    public string str4;
}

public List<DerivedClass> SetItemSource(List<DerivedClass> list) {
    dataGrid.ItemSource = list;
}

当我运行代码时,列的顺序是:

str3 str4 str1 str2

我希望它们显示为:

str1 str2 str3 str4

有没有办法做到这一点?我发现 SilverlightDataGrid非常不灵活。

4

1 回答 1

0

当我只有一个标准类并且我想更改列的顺序时,我使用注释:

[Display(Order=2)]
public string str1 { get; set }

[Display(Order=1)]
public string str2 { get; set; }

我刚刚用派生类试过这个:

 public class BaseClass
    {
        [Display(Order=1)]
        public string str1 { get; set; }
        [Display(Order=3)]
        public string str2 { get; set; }
    }

    public class DerivedClass : BaseClass
    {
        [Display(Order=4)]
        public string str3 { get; set; }
        [Display(Order=2)]
        public string str4 { get; set; }
    }

我的网格列是: str1 str4 str2 str3 正如预期的那样。

[编辑] 需要包含一个 using 声明: using System.ComponentModel.DataAnnotations;使用 [Display...] 我真的很喜欢同时使用 gridview 和 dataform。大多数人讨厌讨厌讨厌数据表单。花了很多令人沮丧的时间来了解如何使它适合/工作在我们的 LOB 应用程序中,但现在它对于 UI 开发人员来说非常强大和快速。

另外 - 如果您不熟悉数据注释,它们绝对是 rad。您可以设置属性如 [Required(true)]、[Display(Name="String 3")]、[StringLength(3,ErrorMessage="This field can not超过 3 characters in length")]、Range(0,10 ,ErrorMessage="Must be 0-10)")] 等等。验证错误会自动冒泡到 UI。他们在我们的开发过程中节省了大量时间。[/编辑]

于 2011-05-04T16:44:54.847 回答