VSIX(Visual Studio扩展)“字体和颜色”改变了事件

时间:2013-12-04 13:11:42

标签: c# visual-studio-2012 visual-studio-2013 visual-studio-extensions vsix

我正在编写Visual Studio 2012/2013扩展,出于性能原因,缓存了所有配置值。

要实时显示“字体和颜色”中的更改,我需要知道用户更改的选项。

如果用户更改了任何选项设置,是否有通知方式?

目前我有一个解决方法,并在我的Initialize方法中使用Windows.WindowCreated事件:

Dispatcher.CurrentDispatcher.BeginInvoke(
    new Action( () => {
        DTE.Events.WindowEvents.WindowCreated += WindowEvents_WindowCreated;
    } ), DispatcherPriority.ApplicationIdle, null );

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

您要查找的活动是IEditorFormatMap::FormatMappingChanged。当“字体和颜色”部分中的值更改时,将触发此操作。此接口特定于特定ITextView实例,但您可以轻松地在创建的所有ITextView实例上聚合它。

要获得此界面,您需要导入IEditorFormatMapFactoryService。此服务提供ITextView - >的映射。 IEditorFormatMap

答案 2 :(得分:1)

感谢所有输入。我想我发现了一些有用的东西。我有IWpfTextViewCreationListener。我添加了以下代码行:

[Import]
public IEditorFormatMapService FormatMapService = null; // MEF

public void TextViewCreated( IWpfTextView textView ) {
    IEditorFormatMap editorFormatMap = FormatMapService.GetEditorFormatMap( textView );
    editorFormatMap.FormatMappingChanged += FormatMapChanged;
}

void FormatMapChanged( object sender, FormatItemsEventArgs e ) {
    /* do something */
}

FormatItemsEventArgs包含所有更改的字体和颜色。这正是我所需要的。