当文档变为脏(未保存)
时,我一直在寻找解决方案以引起注意我知道word文档中有一个属性Saved
但我的问题是当布尔值转向false
时我需要注意。我一直在寻找一个没有成功的活动。
我尝试过的活动:
DocumentChange // this event fired when the a new document is open
WindowSelectionChange // this event fired when the carriage move but not when the document text change
我查看了Microsoft.Interop事件页面,但似乎没有一个适合我的情况。
我没有解决方案。
上下文
我创建了一个上传文档的WPF应用程序。在此应用程序中,我上传了button
。当文档的Saved
属性为true时,此按钮被禁用,而当此标志变为false时我想要无法使用此按钮。但是当这个属性改变时没有钩子......
答案 0 :(得分:0)
我不知道你有什么办法可以做你想要的 - 没有具体的事件,所以我唯一能想到的就是每次选择改变时都要检查(尽管如此当没有变化时发射,当发生变化时它也会发射)。
另一种解决方案是:您的WPF按钮可能绑定到ICommand
,其bool CanExecute()
方法。如果命令的CanExecuteChanged
事件链接到框架的CommandManager.RequerySuggested
事件,那么按钮应该更新各种事件(焦点更改等 - 每当框架认为状态可能已更改时它爆发了很多!)
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
这通常是各种MVVM框架RelayCommand
/ DelegateCommand
实现的处理方式。
答案 1 :(得分:0)
尝试使用Application类的DocumentBeforeSave方法。在保存任何打开的文档之前触发它。
您也可以考虑使用计时器对象定期检查Saved属性值。请注意,您需要访问主线程上的Word对象模型以避免出现问题,因为Office应用程序使用单线程单元模型。