我正试图根据用户在 AppointmentItem.Body中输入的文本更新我的自定义Ribbon.我有2个问题无法解决:1.)我找不到一个当用户在 AppointmentItem的Body中输入文本时可靠地触发的事件。恐怕没有任何事件可以让我订阅。正确吗,AppPropertyChange不起作用。
2.) 我明白Ribbon有一个链接到ThisAddIn实例。但在正确的架构中,不应该有一个从ThisAddIn到Ribbon的引用。因此,即使我设法在ThisAddIn中找到正确的事件处理,我也无法在Ribbon上调用InvalidateUI,因为我没有与Ribbon实例的链接。对不对?
对于你的问题1)
我认为没有事件监听到keydown或其他的东西,以 AppointmentItem.Body
. 你就不能把逻辑反过来吗?这样在点击功能区按钮后,你就可以检查预约中的内容了?
对于你的问题2)
解决办法是让Ribbon约 Globals
. 确保你能接触到色带,并观看。这个问题在stackoverflow上
public partial class ThisAddIn {
Explorer activeExplorer;
private void ThisAddIn_Startup(object sender, EventArgs e) {
this.activeExplorer = this.Application.ActiveExplorer();
this.activeExplorer.ViewSwitch += new ExplorerEvents_10_ViewSwitchEventHandler(this.ViewSwitch);
}
private void ViewSwitch() {
bool isActive = false;
try {
Globals.Ribbons.CalendarRibbon.GroupCalendar.Visible = isActive;
Globals.Ribbons.CalendarRibbon.ButtonCalendarSync.Visible = isActive;
} catch (System.Exception ex) {
// ... catch the exception
}
}
}