Я пытаюсь заставить NSTableView работать в MonoMac (в качестве замены System.Windows.Forms.ListView), и я очень озадачен тем, почему мой метод GetObjectData не вызывается. Я поместил отладочные отпечатки, и метод GetRowCount в моем NSTableViewSource вызывается правильно, но он никогда не попадает в GetObjectData. Я получаю таблицу с нужным количеством строк, даже отбор, но в строках нет данных. ReloadData также работает, потому что есть еще один вызов GetRowCount.MonoMac TableView не вызывает GetObjectData
Вот код:
public class MyTableViewSource : NSTableViewSource
{
//... (constructor, etc.)
public override int GetRowCount(NSTableView table)
{
Debug.Print ("NumberOfRowsInTableView = {0}", mSFList.RowCount);
return mSFList.RowCount;
}
// TODO: Why is this not being called!!!
public override NSObject GetObjectValue(NSTableView table, NSTableColumn col, int row)
{
Debug.Print ("Getting data for row {0}, column titled {1}", row, col.HeaderCell.Title);
// Get the column index.
int colIndex;
NSTableColumn[] cols = table.TableColumns();
for (colIndex = 0; colIndex < cols.Length; colIndex++)
if (cols[colIndex] == col) break;
if (colIndex >= cols.Length) return null;
return new NSString(mSFList[row,colIndex]);
}
Я даже пытался принуждая вещи с этим экспорт, но я не знаю, если у меня есть строка правильно.
[Export("tableView:getObjectValue:forTableColumn:row:")]
public NSObject MyGetObjectValue(NSTableView table, NSTableColumn col, int row)
{
return GetObjectValue(table, col, row);
}
Выход отладки всегда очень последовательны:
NumberOfRowsInTableView = 2
Любые идеи? Интересно, сделал ли я все правильно со стороны XCode, но не столкнулся с таблицей, я не вижу, как я мог заблокировать этот метод.
Xamarin Studio 5.5, но я сохраняю Mono версии 3.8.0 на данный момент (у 3.10 есть проблемы с некоторыми кодами Windows, которые я использую).
(И да, у меня есть несколько столбцов - 3 - и я также получить ответ, когда я нажимаю на одном из колонки заголовки, «DidClickTableColumn».) – Apollo
Вы когда-нибудь это делали, я застрял в той же проблеме – ClaraU
Я фактически полностью отказался от TableView. Моя цель состояла в том, чтобы приблизительно скопировать ListView из Windows Forms, и я смог сделать это довольно легко, создав собственный собственный класс, полученный из NSView. Мне пришлось рисовать собственные таблицы и заполнять их текстом, но в этом нет ничего сложного, а построитель интерфейса XCode упрощает установку пользовательского представления внутри ScrollView. Я тоже сделал это для некоторых других моих пользовательских интерфейсов; кажется, лучше подходит, чем пытаться обуздать мои желательные парадигмы интерфейса в элементы Mac UI. – Apollo