提问人:VA systems engineer 提问时间:9/16/2023 更新时间:9/19/2023 访问量:38
如何扩展或派生 Microsoft RibbonFactory 创建的 RibbonToggleButton?
How do I extend or derive from the RibbonToggleButton created by the Microsoft RibbonFactory?
问:
在此方案中,我如何扩展/派生?RibbonToggleButton
我有一个 Microsoft Word VSTO 加载项。我的目标是创建一个扩展或派生自 .我想扩展/派生,因为我想通过至少一个自定义属性来扩展类。MyRibbonToggleButton
Microsoft.Office.Tools.Ribbon.RibbonToggleButton
RibbonToggleButton
我的方法是观察一个是如何创建的,然后从我所看到的中派生类。Microsoft.Office.Tools.Ribbon.RibbonToggleButton
MyRibbonToggleButton
1. 我创建了一个新的 Word VSTO 项目
2.添加了一个功能区
3. 设计了功能区,添加了一个 RibbonToggleButton
当我检查设计器时,我可以看到一个对象是通过调用功能区的 .RibbonToggleButton
Factory.CreateRibbonToggleButton()
由于返回的对象类型是 ,我创建了一个自定义类并尝试从 派生。Microsoft.Office.Tools.Ribbon.RibbonToggleButton
RibbonToggleButton
这时我才意识到这是一个接口。因此,我的自定义类大约有 30 个左右未定义的属性、方法、事件等。我不想编写所有这些背后的代码。相反,我想利用 Microsoft 在基类中提供的属性、方法和事件,并且我想添加至少一个自定义属性。RibbonToggleButton
RibbonToggleButton
现在我遇到了麻烦,因为我很难理解一般的接口,更不用说如何扩展/派生接口了。我很困惑,因为我知道在运行时必须返回一个具体对象。同样:我想利用 Microsoft 在基类中提供的属性、方法和事件,并且我想添加至少一个自定义属性。RibbonToggleButton
Factory.CreateRibbonToggleButton()
RibbonToggleButton
在此方案中,我如何扩展/派生?RibbonToggleButton
答:
你不能那样做,我不确定你为什么需要它。如果你能帮上忙,我也会避免使用功能区设计器 - 只需从你的代码中返回功能区 XML。
每个功能区控件都有一个 ID(在功能区 XML 中定义)。如果需要使自定义控件与功能区控件保持同步,请刷新功能区(通过调用 IRibbonUI.Invalidate 或 IRibbonUI.InvalidateControl)。这将导致功能区在控件上触发自定义回调(需要在功能区 XML 中指定它们),例如 getImage、getText 等。然后,您可以根据需要返回更新的信息。
评论
Ribbon1.Designer1.cs
this.Factory.CreateRibbonToggleButton()
has-a
RibbonToggleButton
System,Windows.Controls.UserControl
MyUserControl : UserControl
MyUserControl
RibbonToggleButton AssociatedToggleButton
RibbonToggleButton
UserControl AssociatedUserControl