Можно ли как-то расширить класс и хост RuleSetDialog в нашем приложении Windows?Workflow RuleSetDialog
ответ
Вы не можете расширить RuleSetDialog класс (так как она запечатана), но вы можете разместить его в своем приложении:
Хотя это правда, что расширение диалога не точно поддерживается, вы можете уйти с некоторыми настройками. В предыдущем проекте мне удалось скрыть и изменить некоторые элементы управления диалогового окна во время выполнения.
var dialog = new RuleSetDialog(activityType, null, ruleset);
dialog.Controls["headerTextLabel"].Visible = false;
dialog.Controls["pictureBoxHeader"].Visible = false;
...
var ruleGroupBox = dialog.Controls["ruleGroupBox"];
ruleGroupbox.Top -= 46;
... etc.
Огонь Отражатель и тыкать вокруг. Ничто не мешает вам скрывать и перемещать элементы управления, чтобы настроить его. Вы даже можете добавить элементы управления в групповые поля, переустановить обработчики кнопок или полностью изменить форму по своему вкусу. Это немного ручное, но это можно сделать.
Вы можете сделать это полностью с помощью только небольшого взлома: отделите внутренний элемент intellisense textbox от системного пространства System.Workflow.Activities.Rules.Design ... тогда вы можете сделать почти что-нибудь с этим. Разделение означает здесь обычное: создать обертку (адаптер, возможно, элемент управления Textbox), создать экземпляр после разрешения некоторых зависимостей (в худшем случае вы можете просто скрыть редактор исходного правила, парсер и т. Д.).