c# - 检测何时选择了设计表面上的控件

标签 c# wpf controls expression-blend

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

最佳答案

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

下面的第一个方法在事件文档改变时被调用。此方法处理 IDocumentServiceActiveDocumentChanged 事件。首先,它从调色板注册表中获取 TimelinePane 的内容。在此内容中存在 ActiveSceneViewModel。 ActiveSceneViewModel 是包含事件场景(= 当前正在编辑的 xaml 文件)的 View 模型。 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
}

关于c# - 检测何时选择了设计表面上的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472879/

相关文章:

c# - 如何使用 JSON.Net 获取反序列化 json 的 key

wpf - 如何从 WPF 应用程序使用FolderBrowserDialog

c# - 为什么我不能在将控制台窗口作为我的 WPF 应用程序的父级后与它交互?

c# - 将 i 值添加到控件名称

c# - Google 通讯录数据 API 401 错误

c# - 为什么最终输出为零 : OOPS sample

vb.net - 克隆 Winform 控件

objective-c - 以编程方式在 Cocoa 中创建控件

c# - 有人可以向我解释这段 ASP.NET MVC 代码吗?

c# - WPF Visual Studio 调试 - 控制台