Как выборочно отображать определенные свойства в сетке данных из источника данных? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть два блока данных, оба с разными целями. В настоящее время у меня есть переменная ObservableCollection<Competitor> Competitors в качестве источника данных для сетей данных.

Что я хочу сделать, так это использовать одну таблицу данных, чтобы отобразить «конкурентов» в таблице лидеров, показывая их и их время (это таблица гонки, похожая на гонку), причем самое быстрое время - победитель. И мне бы хотелось, чтобы вторая таблица данных показывала пользователей в списке лидеров «баллов», показывая тех же пользователей, со всеми их набранными баллами за последние несколько соревнований.

Итак, как вы, возможно, знаете, установка источника данных для сетки данных позволяет сети данных автоматически создавать столбцы для каждой переменной в классе, как вы увидите ниже. Тем не менее, внутри класса есть переменные, которые я хочу в одном столбце, а не в другом, наоборот. Например, в первой сетке данных мне нужно имя пользователя, «ВП», «TimeFormated» и DQ, а во второй сетке данных я хочу имя пользователя и счет.

Вот полный класс, которым я пользуюсь:

internal class Competitor
{
    public int Place { get; set; }
    public string Username { get; set; }
    public int VIStart { get; set; }
    public int VIEnd { get; set; }
    public int VIs { get { return VIEnd - VIStart; } }
    public double TimeInSeconds { get { return GetTime(); } }
    public string TimeFormated { get { return GetFormatTime(); } }
    public int Rerecords { get; set; }
    public bool DQ { get; set; }
    public string DQReason { get; set; }
    public double Score { get; set; }

    // More code here that is unimportant
}

Итак, я предполагаю, что лучший способ для меня - это настраивать оба столбца таблицы данных, поскольку они настолько специфичны, однако я хотел бы знать, есть ли способ выбрать в коде, какие переменные отображать в качестве заголовков столбцов .

Я знаю, что вы можете задать [Browsable(false)], в соответствии с этим вопросом, однако, насколько я могу судить, он не подлежит переключению.

Руководство и любые советы и предложения будут очень признательны. Спасибо.

1 Ответ

1 голос
/ 07 июня 2019

Украшение ваших исходных свойств атрибутами не решит вашу проблему отображения определенного свойства / столбца в одном DataGrid, но скроет его в другом.

Правильный способ решить эту проблему - определить фактические столбцы, которые вы хотите видеть явным образом, либо программно в программном обеспечении представления, либо в разметке XAML.

Автоматическая генерация столбцов может показаться удобной, но она не очень гибкая.

...