Как охватывать столбцы в NSGridView или NSTableView

Я искал везде и не нашел много встроенных функций для охвата столбцов или строк ни NSGridView, ни NSTableView. На данный момент я думаю, что мне придется либо переопределить некоторые методы, либо искать другой элемент управления. Я не очень долго работаю в OSX, и, что еще хуже, я работаю в Xamarin, которого пока не так много. Если у вас есть ответ в какао, я могу перевести (или хотя бы попробовать).

Есть ли что-то еще, что лучше соответствовало бы моим потребностям? Мне нужна какая-то сетка на основе представления, которая может охватывать строки/столбцы. Может ли кто-нибудь хотя бы указать мне общее направление решения? Спасибо!


person Brooks Lindsey    schedule 31.10.2017    source источник
comment
Это не стандартный контейнер Cocoa, а составные столбцы/строки не входят в рекомендации по проектированию MacOS и не подходят для стандартного источника данных, протоколов делегирования и настройки привязок Cocoa. Как правило, если у вас есть данные, которые не соответствуют согласованной строке/столбцу, один столбец на основе NSTableView (контент на основе просмотра), который содержит пользовательский NSTableCellView, который обрабатывает пользовательский контент/элементы. Это не значит, что вы не можете создать его сами... ;-)   -  person SushiHangover    schedule 31.10.2017
comment
Есть отличный контент WWDC: например, Выбор правильного представления контейнера Cocoa: developer. apple.com/videos/play/wwdc2017/218 devstreaming-cdn.apple.com/videos/wwdc/2017/218p1ql8x8ga34/218/ developer.apple.com/macos/human-interface-guidelines/overview/   -  person SushiHangover    schedule 31.10.2017
comment
Спасибо за советы ребята! К сожалению, я не один из тех, кто предъявляет требования к вождению, поэтому, хотя это и противоречит правилам, мне все равно нужно это сделать. Думаю, я начну изучать расширение функциональности механизма компоновки NSGridView или создание своего собственного.   -  person Brooks Lindsey    schedule 31.10.2017


Ответы (1)


Ах ах! Существует метод MergeCells, который делает именно то, что я хочу! Почему об этом никто не знает??

введите здесь описание изображения

Создано с использованием:

MergeCellsInColumn(grid, 0, 0, 1);
MergeCellsInRow(grid, 3, 0, 1);

а также

private void MergeCellsInColumn(NSGridView grid, int column, int startingRow, int endingRow)
{
    grid.MergeCells(new NSRange(column, 1), new NSRange(startingRow, endingRow - startingRow + 1));
}

private void MergeCellsInRow(NSGridView grid, int row, int startingColumn, int endingColumn)
{
    grid.MergeCells(new NSRange(startingColumn, endingColumn - startingColumn + 1), new NSRange(row, 1));
}

Не уверен, где это доступно в другом месте, но это легко работает в Xamarin.Mac. Может быть, это поможет кому-то еще в будущем?

person Brooks Lindsey    schedule 01.11.2017