自定义小部件设计时间支持?

Custom widget design time support?

MonoDevelop (Stetic) 的 GUI 设计器为小部件提供设计时支持,例如 Notebook 小部件,它具有 Insert Page Before 选项在 之后插入页面。它还允许我将子小部件放到那些单独的页面上。

这是直接在Gtk#中实现的吗?我在哪里可以检查代码?我如何为我自己的自定义小部件实现它?我想创建一个类似笔记本的导航控件(类似于 MS Outlook 2007/2010/2013),可以使用 Stetic 的拖放进行设计。

我已经尝试在源代码中搜索 MonoDevelop and Gtk#. It seems to me this may be implemented in a similar manner with additional classes and attributes like in Visual Studio with Attributes and Design-Time Support,但找不到任何证据。

在MonoDevelop中,Stetic被定义为AddIns中的一个成员。从技术上讲,它始终是 available/installed,因此它不是您从加载项管理器处理的内容。

所以你在找:

MonoDevelop.GtkCore.dll
libstetic.dll
libsteticui.dll

在 modevelop 构建期间,假设您在本地有 monodevelop 代码,这些代码将被构建并放置在:

monodevelop/main/build/AddIns/MonoDevelop.GtkCore

您要查找的源代码位于:

monodevelop/main/src/addins/*

为了让您快速入门,我强烈推荐:

  • git 克隆 monodevelop 源代码库
  • cd 到 repo
  • ./configure --help(找出你需要使用的选项)
  • 一旦可以构建 modevelop,就可以使用该构建版本或(Xamarin Starter+) 打开工作区 MonoDevelop.mdw(在 repo 的根目录中)
  • 导航至:
  • 主要/插件/MonoDevelop.GtkCore/libstetic
  • 主要/插件/MonoDevelop.GtkCore/libsteticui

攻城愉快;-)

MonoDevelop 中的 Stetic 设计器根本不支持 "pluggable" 小部件设计或命令的概念。它只是按照它支持的控件的方式编写的,任何其他内容都必须通过 Custom Widget 小部件添加并通过代码进行操作。