C1FlexGrid ширина

Я начал использовать C1FlexGrid ComponentOne для своего приложения WPF Caliburn.Micro. Интересно, как я могу установить столбцы на максимальную ширину содержимого. Я попытался сделать это Авто, но ширина по-прежнему одинакова для всех столбцов.

Я применил AutoSizeColumns следующим образом:

      protected override void OnViewAttached(object view, object context)
  {
      var View = (FirstDataEntryView)view;
      View.EnrollmentFiles.AutoSizeColumns(0, 4, 5);
  }

но это не помогло ...

Спасибо


person David Shochet    schedule 06.08.2012    source источник
comment
изменил это на ответ   -  person erodewald    schedule 08.08.2012


Ответы (1)


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

изменить: добавление кода для использования в CM.

protected override void OnViewAttached(object view, object context) {
    View = (YourViewType)view;
    View.flexGrid.AutoSizeColumns(0,4,5);
}

Насколько "совместим" ли доступ к представлению из модели представления с теориями MVVM - технически это не так, но иногда вы вынуждены использовать элементы управления, которые просто не могут быть автоматически настроены через XAML, и вы не можете использовать Код программной части представления по той или иной причине.

person erodewald    schedule 08.08.2012
comment
Спасибо за ваш ответ. Но поскольку я использую Caliburn.Micro (без кода программной части), возможно ли это сделать в xaml? - person David Shochet; 08.08.2012
comment
Хотя он немного отличается от слабо связанного шаблона MVVM, вы все равно можете получить доступ к своему представлению из своей ViewModel. CM поддерживает это, передавая объект View в OnViewAttached или OnViewLoaded. Переопределите один из них [который лучше всего соответствует вашим потребностям] и запишите этот экземпляр вашего представления. Затем вы можете получить доступ к своей FlexGrid по имени. Я отредактирую этот ответ с помощью некоторого кода. - person erodewald; 08.08.2012
comment
Пропустил ваш фактический вопрос в этом комментарии - это не представляется возможным в соответствии с их документацией и шумихой в Интернете. К сожалению, это довольно распространенная проблема с сетями данных. - person erodewald; 08.08.2012
comment
Я попробовал (см. Обновленный вопрос), но по какой-то причине не сработало. Интересно, почему... - person David Shochet; 08.08.2012
comment
@DavidShochet Попробуйте OnViewLoaded, столбцы могут быть еще не видны (требование для работы этого метода). - person erodewald; 08.08.2012
comment
Хммм ... В нем говорится, что нет подходящего метода для переопределения ... OnViewLoaded не принимает параметров ... поэтому я не могу получить доступ к представлению. - person David Shochet; 08.08.2012
comment
позвольте нам продолжить это обсуждение в чате - person David Shochet; 08.08.2012