Как изменить поведение ObservableCollection пользовательского типа при использовании в сетке данных? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть класс с именем DelimitedCollection, который наследуется от ObservableCollection типа Row.Row - это еще один класс, который я определил.На практике Row - это просто строка [], которая имеет несколько простых действий (вставка, удаление, получение и т. Д.).Таким образом, на практике моя коллекция DelimitedCollection должна вести себя как двумерная таблица с фиксированным числом столбцов и неопределенным числом строк.В конце я хочу использовать DelimitedCollection (мой класс) в качестве ItemSource для wpf DataGrid.Прямо сейчас DataGrid обрабатывает каждую строку как 1 столбец, потому что не знает, как обрабатывать класс как строку [].

Если я пытаюсь использовать полиморфизм, я получаю сообщение об ошибке, указывающее, что класс не может быть неявно преобразован в строку [].Я искал функцию переопределения, но ничего не нашел.

Row Class:

    public string[] Items { get; private set; }
    public Row()
    {
        Items = null;
    }
    public Row(string[] columns)
    {
        Items = columns;
    }
    public string Get(int index)
    {
        if (index < Items.Length)
        {
            return Items[index];
        }
        else return null; 
    }
    public void Insert(string value, int index)
    {
        if (index < Items.Length)
        {
            Items[index] = value;
        }
    }
    public void Remove(int index)
    {
        if (index < Items.Length)
        {
            Items[index] = null;
        }
    }
    public override string ToString()
    {
        string ret = "";
        for (int i = 0; i < Items.Length; i++) {
            if (i == 0)
            {
                if (Items[i] == null) ret += "NILL";
                else ret += Items[i];
            }
            else
            {
                if (Items[i] == null) ret += ", NILL";
                else ret += ", " + Items[i];
            }
        }
        return ret;
    }
}

Есть ли способ указать полиморфное поведение для класса при сохранении его функциональности?Т.е. я хочу, чтобы DataGrid понимал, как читать ObservableCollection (типа Row) как ObservableCollection (типа string []) без необходимости предоставления отдельной ObservableCollection (типа string []).Я хочу сам определить это поведение, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...