Просмотр порядка производных переменных класса в Silverlight DataGrid - PullRequest
0 голосов
/ 04 мая 2011

У меня следующая ситуация в проекте 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 str *

Есть ли способ сделать это?Я считаю Silverlight DataGrid очень негибким.

1 Ответ

0 голосов
/ 04 мая 2011

Когда у меня есть только стандартный класс и я хочу изменить порядок столбцов, я использую аннотации:

[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, как и ожидалось.

[EDIT] Необходимо добавить объявление использования: using System.ComponentModel.DataAnnotations; для использования [Display ...] Мне действительно нравится работать как с gridview, так и сDataForm.Большинство людей ненавидят, ненавидят форму данных.Потребовалось много разочаровывающих часов, чтобы понять, как заставить его работать в наших LOB-приложениях, но теперь это невероятно мощный и быстрый инструмент для пользовательского интерфейса.

Также - если вы не знакомы с аннотациями данных, они абсолютно рад.Вы можете установить такие атрибуты, как [Обязательный (true)], [Display (Name = "String 3")], [StringLength (3, ErrorMessage = "Это поле не может превышать 3 символа в длину")], Range (0,10, ErrorMessage = "Должно быть 0-10)")] и т. Д. И т. Д. И т. Д. Ошибки валидации автоматически всплывают до пользовательского интерфейса.Они серьезно сэкономили время в нашем процессе разработки.[/ EDIT]

...