Ширина раздела MigraDoc

Мне нужен метод для установки относительной ширины столбца в MigraDoc, и я нашел этот пост на эту тему. Проблема в том, что это не работает для меня. Я скопировал точный код из этого поста:

Section section = document.AddSection();
section.PageSetup.PageFormat = PageFormat.A4;

int sectionWidth = (int)(section.PageSetup.PageWidth - section.PageSetup.LeftMargin - section.PageSetup.RightMargin);
int columnWidth = sectionWidth / 2;

Однако, если я вставлю в код точку останова (сразу после int columnWidth = ...), она укажет, что ширина страницы раздела равна нулю:

Скриншот вывода

Таким образом, очевидно, что все, что выводится из ширины сечения, также становится равным нулю. Но почему? Как видите, для PageFormat правильно установлено значение «A4». я не понимаю...


person Jakob Busk Sørensen    schedule 08.11.2017    source источник


Ответы (1)


Мне удалось найти решение (немного случайно). Этот пост описывает несколько похожую проблему с section.PageSetup. Решение состоит в том, чтобы создать клон настройки страницы по умолчанию перед ее изменением. Новый код выглядит так:

Section section = document.AddSection();
section.PageSetup = document.DefaultPageSetup.Clone(); // <-- This has been added
section.PageSetup.PageFormat = PageFormat.A4;

int sectionWidth = (int)(section.PageSetup.PageWidth - section.PageSetup.LeftMargin - section.PageSetup.RightMargin);
int columnWidth = sectionWidth / 2;
person Jakob Busk Sørensen    schedule 08.11.2017