Здравствуйте, столкнулся со следующей проблемой, создаю динамически кнопку на панели по этим статьям
https://adndevblog.typepad.com/aec/2013/05/navisworks-2014-api-new-feature-dynamic-loading-of-plugin.htmlТут все работает и вызывается и показывается, если вывести например Messagebox.Show(), но я хочу создать DockPanePlugin и вот тут у меня затык.
Если создать dll и поместить как обычно в папку плагинов с соответствующими xml и тд, то все срабатывает и DockPanePlugin по нажатию отображается, но если этот же код использовать при динамической подгрузке dll, то никаких изменений, методом тыка нашел, что pane.Visible не присваевается значение true, никак не могу понять, возможно ли вообще так сделать?
Вот код, который использую для отображения DockPanePlugin:
[Plugin("Test#1", "Me", ToolTip = "", DisplayName = "Test")]
public class WPFDockPaneAddin : AddInPlugin
{
public override int Execute(params string[] parameters)
{
if (Application.IsAutomated)
{
throw new InvalidOperationException("Invalid when running using Automation");
}
PluginRecord pr = Application.Plugins.FindPlugin("Test#1.Me");
if (pr is DockPanePluginRecord && pr.IsEnabled)
{
if (pr.LoadedPlugin == null)
{
pr.LoadPlugin();
}
if (pr.LoadedPlugin is DockPanePlugin dpp)
{
dpp.Visible = !dpp.Visible;
var pane = dpp.CreateControlPane();
pane.CreateControl();
pane.Show();
dpp.ActivatePane();
MessageBox.Show("CreateControlPane, isVisible " + dpp.Visible); //Вот тут всегда false
}
}
return 0;
}
}
[Plugin("Test#1", "Me", ToolTip = "", DisplayName = "Test")]
[DockPanePlugin(100, 200, FixedSize = false, MinimumHeight = 100, MinimumWidth = 300)]
public class Class1 : DockPanePlugin
{
protected override bool IsSelfEnabled() => true;
public override Control CreateControlPane()
{
ElementHost eh = new ElementHost();
eh.AutoSize = true;
eh.Child = new UserControl1();
eh.CreateControl();
eh.Visible = true;
return eh;
}
public override void DestroyControlPane(Control pane) => pane.Dispose();
}