【问题标题】:Detect when a control on design surface is selected检测何时选择了设计表面上的控件
【发布时间】:2011-07-25 06:41:31
【问题描述】:

我正在编写一个 Expression Blend 4 扩展,我想检测(在我的扩展中)何时选择了设计图面上的控件或元素。有人可以告诉我如何检测它吗?谢谢,蒂姆

【问题讨论】:

    标签: c# wpf controls expression-blend


    【解决方案1】:

    我在my tutorial on writing extensions 上继续了一点。当你看这个项目的示例代码时,下面的代码应该很清楚了。

    下面的第一个方法在活动文档改变时被调用。此方法处理 IDocumentServiceActiveDocumentChanged 事件。首先,它从调色板注册表中获取 TimelinePane 的内容。 ActiveSceneViewModel 在此内容中。 ActiveSceneViewModel 是包含活动场景的视图模型(= 正在编辑的当前 xaml 文件)。 ActiveSceneViewModel 包含一组选定元素,即 ElementSelectionSet。其中有一个事件(已更改),在更改时会触发。处理此事件。

    在此事件处理程序中,您可以在更改后直接访问选择集。

    private void ActiveDocumentChanged(object sender, DocumentChangedEventArgs e)
    {
        var timelinePane = 
             (TimelinePane)WindowService.PaletteRegistry["Designer_TimelinePane"].Content;
        _activeSceneViewModel = timelinePane.ActiveSceneViewModel;
        _activeSceneViewModel.ElementSelectionSet.Changed += 
             new System.EventHandler(ElementSelectionSet_Changed);
    
        //some other goes here....
    }
    
    void ElementSelectionSet_Changed(object sender, System.EventArgs e)
    {
        SceneElementSelectionSet selectionSet 
            = sender as SceneElementSelectionSet;
        // get the selected elements from the selection set
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-19
      • 2010-10-05
      • 2023-04-10
      • 2015-08-23
      • 1970-01-01
      • 2011-12-20
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多