Мне нужно написать сетку, подобную Excel, в которой может быть много ячеек (400x400). Все столбцы имеют одинаковую ширину, а все строки одинаковой высоты. Каждая ячейка может содержать текст или быть пустой, а каждая ячейка может иметь столбец и / или строку span. Я полагаю, что это никогда не будет работать с панелью Grid , и я полагаю, что мне потребуется виртуализация пользовательского интерфейса в направлении столбцов и строк.
Итак, моей первой попыткой было создать виртуализирующую сетку на основе VirtualizingPanel и реализовать IScrollInfo . Это могло бы быть "легко" решением, за исключением того, что я столкнулся с проблемой:
Чтобы предоставить IScrollInfo
соответствующую информацию о размере и положении прокрутки и чтобы можно было определить, какие элементы необходимо создать (реализовать) в следующем порядке с помощью ItemsContainerGenerator, мне нужно знать индекс столбца, значение Indeox строки и число столбцов для каждый дочерний элемент (ячейка). Единственный способ сделать это - использовать свойства attach. Проблема в том, что я могу читать значения вложенных свойств, только если уже имеется реализованный ItemContainer. Так что я в защелке 22 здесь. Чтобы знать, что реализовать, мне нужно реализовать все предметы. Чтобы предоставить данные для IScrollInfo
мне нужно реализовать все пункты.
Так что, похоже, я зашел в тупик с этим подходом.
Есть ли у вас какие-либо идеи, как я мог бы реализовать такой элемент управления, или знаете, как я мог бы решить вышеупомянутую проблему?