2015-04-24 3 views
0

Я искал решение, чтобы быть замеченными, когда документ превратился Грязный (несохраненная)Microsoft.Office.Interop.Word Слушайте на сэкономленные собственности

Я знаю, что есть свойство Saved на но моя проблема в том, что мне нужно получить уведомление, когда этот Boolean превратится в 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 истинно, и я хочу, чтобы он не смог, когда этот флаг изменился на false. Но нет никакого крюка, когда это свойство меняется ...

+1

Не существует, насколько мне известно. Каков более широкий контекст этого? Чего вы пытаетесь достичь? Может быть другой способ. –

+1

Обновлено мой ответ – C1rdec

ответ

0

Попробуйте использовать метод DocumentBeforeSave класса Application. Он запускается до сохранения любого открытого документа.

Также вы можете использовать объект таймера для периодической проверки значения сохраненного свойства. Имейте в виду, что вам необходимо получить доступ к объектной модели Word в основном потоке, чтобы избежать проблем, потому что приложения Office используют модель с однопоточной квартирой.

+0

Проблема заключается в том, что пользователю необходимо сохранить документ, чтобы включить кнопку, которую я хочу включить, как только текст будет изменен. – C1rdec

+0

Используйте таймер. Объектная модель Word не предоставляет для этого никакого другого события. –

+0

Да, я думал об этом решении, но не кажется эффективным – C1rdec

0

Я не знаю, как вы можете сделать именно то, что вы хотите - нет конкретного события, поэтому единственное, что я мог подумать, - это проверять каждый раз выбор изменяется (так как если он срабатывает, когда нет изменений, он также срабатывает при изменении).

Другое решение: ваша кнопка WPF, вероятно, связана с ICommand, которая имеет метод bool CanExecute(). Если CanExecuteChanged события командования связанно с CommandManager.RequerySuggested события фреймворки, то кнопка должна обновлять на различных событиях (изменение фокуса и т.д. -. Когда структура думает государство, возможно, изменило Стреляет много!)

public event EventHandler CanExecuteChanged 
{ 
    add { CommandManager.RequerySuggested += value; } 
    remove { CommandManager.RequerySuggested -= value; }  
} 

Это как это делают различные реализации MVVM framework RelayCommand/DelegateCommand.

+0

С сожалением расскажу вам, но он не может быть применен к Свободному пользовательскому интерфейсу (он же Ribbon UI). –

+0

Приложение не зависит от слова – C1rdec

+1

Ох ... справа. Во всяком случае, это не решает проблему. –

Смежные вопросы