WPF TreeView 双击后恢复焦点

2023-11-21

我有一个带有 XAML 的 WPF TreeView,如下所示:

<TreeView x:Name="twElements">
            <TreeView.Resources>
                <v8r:IconTypeConverter x:Key="IconConverter"/>
            </TreeView.Resources>

            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <EventSetter Event="MouseDoubleClick" Handler="twElements_MouseDoubleClick" />
                </Style>
            </TreeView.ItemContainerStyle>

            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding ChildItems}">
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Icon, Converter={StaticResource IconConverter}}"/>
                        <TextBlock Text="{Binding Text}" Margin="3,0,0,0"/>
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>

任务是双击子项目后打开某个表单。

DoubleClick 事件的代码隐藏:

private void twElements_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.Source is TreeViewItem && ((TreeViewItem)e.Source).IsSelected)
            {
                e.Handled = true;

                var twi = (TreeViewItem)e.Source;

                var Editable = twi.Header as IEditable;
                if (Editable != null)
                {

                    Window Editor = Editable.GetEditor();
                    Editor.Show(); // Editor is a WPF.Window

                }

            }

}

问题:打开所需的窗口后,带有树视图的窗体会自行激活,使新窗口进入后台。 如何使新窗口保持活动状态?


在打开新窗口之前,您可能需要让 WPF 完成处理当前鼠标单击事件的工作。让新窗口成为nextUI 作业将其添加到当前调度程序的队列中,如下所示:

(...)

//Editor.Show();
Action showAction = () => Editor.Show();
this.Dispatcher.BeginInvoke(showAction);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF TreeView 双击后恢复焦点 的相关文章

  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • 为什么派生类不使用基类的operator=(赋值运算符)?

    以下是实际问题的简化版本 而不是打电话Base operator int 代码似乎生成了一个临时的Derived对象并复制它 既然函数签名似乎完美匹配 为什么不使用基本赋值运算符 这个简化的示例没有显示任何不良影响 但原始代码在析构函数中有
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • 使用反射获取基类的受保护属性值

    I would like to know if it is possible to access the value of the ConfigurationId property which is located in the base
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in

随机推荐

  • iPhone SDK 4.3 libav编译问题

    我遇到了奇怪的问题 我安装了 iPhone SDK 4 3 和 xCode 4 现在无法从 ffmpeg 为 ARMv6 架构编译 libav 这是我的编译脚本 它适用于 iPhone SDK 4 2 configure disable d
  • HTTP POST 请求的大小限制是多少?

    抱歉 如果这是重复的 我想它会是 但找不到任何东西 我有一个 Flex 应用程序 我通过 Internet Explorer 将数据发送回 PHP MySQL 服务器 我还没有遇到任何问题 但是提前知道这一点可能会为我节省大量的挫败感和工作
  • c 中与平台无关的 size_t 格式说明符?

    我想打印出一个类型的变量size t在 C 中 但似乎size t不同架构上不同变量类型的别名 例如 在一台机器 64 位 上 以下代码不会引发任何警告 size t size 1 printf the size is ld size 但在
  • 有没有办法使用 Kafka Confluence REST API 生成带有标头的 Kafka 消息?

    我正在尝试使用一些自定义标头向 Kafka 发送消息 但我找不到方法 根据文档 The POST topics string topic name API 无法将自定义标头附加到消息 有谁知道如何通过融合的 Kafka REST API 发
  • 在 ASP.NET MVC 的模型中调用 UrlHelper

    我需要在 ASP NET MVC 的模型中生成一些 URL 我想调用类似 UrlHelper Action 的方法 它使用路由来生成 URL 我不介意填写常见的空白 例如主机名 方案等 我可以调用任何方法吗 有没有办法构造一个UrlHelp
  • `np.concatenate` 具有稀疏矩阵的 numpy 数组

    数据集包含数值变量和分类变量 我将其分为两部分 cont data data cont variables values disc data data disc variables values 然后我用sklearn preprocess
  • 所有预加载链接的 Next.js 404 错误

    我是 next js 的新手 作为第一步 在开始开发实际的应用程序之前 我正在按照文档学习基础知识 现在 我正在努力尝试让预取工作 因为所有预加载的请求返回 404 错误 那么我的代码有什么问题吗 我怎么解决这个问题 演示存储库已开启git
  • T-SQL 四舍五入到小数位

    如何将 matchpercent 的结果四舍五入到小数点后两位 我使用以下命令返回一些结果 DECLARE topRank int set topRank SELECT MAX RANK FROM FREETEXTTABLE titles
  • XML 序列化 - 何时使用 DataContractSerializer / Binary / XMLSerialiser

    我已经看这个有一段时间了 似乎不鼓励二进制序列化 因为对字段名称的任何更改都会破坏序列化 不好 XMLSerializer 是有问题的 因为您必须提供无参数构造函数和公共字段 尽管您确实可以更好地控制作为属性或元素的元素及其命名 DataC
  • mysql_escape_string 整个后数组?

    我想知道是否可以将 my sql escape 字符串存储到整个 POST 和 GET 数组中 这样就不会错过任何变量 不知道如何测试它 否则我自己会测试 谢谢 我会用array walk 功能 它更适合 因为修改了 POST 超全局 因此
  • 如何防止 write.csv 将 POSIXct、日期和时间类更改回字符/因子?

    我有一个 csv 文件 其中每个字段分别表示日期时间 日期和时间 本来它们都是字符字段 我对它们进行了相应的转换 在我的代码末尾 如果我这样做 str data 我会得到 datetime POSIXct date Date time Cl
  • 根据ID在jquery中设置单选按钮“选中”

    我有两个同名的单选按钮 默认情况下选中一个 从 id 选择时如何选中或取消选中 jQuery 中的单选按钮 我试过了 radio1 attr checked checked radio1 attr checked true 似乎没有任何作用
  • ALLOWED_HOSTS 正在防御什么漏洞?

    该示例来自 Python Django 框架 但适用于所有 Web 应用程序 如何ALLOWED HOSTS setting保护您的网站和用户 即如果ALLOWED HOSTS被设置为 恶意用户将如何 毒害带有恶意主机链接的缓存和密码重置电
  • 对三个对象使用“==”运算符

    这两种检查三个对象之间相等性的方法之间是否存在计算差异 我有两个变量 x and y 假设我这样做 gt gt gt x 5 gt gt gt y 5 gt gt gt x y 5 True 这与以下有什么不同 gt gt gt x 5 g
  • 如何克隆 JPA 实体

    我有一个 JPA 实体已保存在数据库中 我想要一份它的副本 具有不同的 ID 并修改了一些字段 做到这一点最简单的方法是什么 喜欢 设置它的 Id字段到null并且坚持下去会有效果吗 我是否必须为实体创建一个克隆方法 复制除 Id 还有其他
  • 在javascript中计算单词并将其推入一个对象中

    我想实现一个 javascript 程序 计算一个单词并返回该单词及其出现的次数 例如 hello 2 hello 1 world 1 toString 1 下面是我的代码 但我只得到总字数 function words str app r
  • 如何在express.js中抛出404错误?

    在 app js 中 我有 catch 404 and forward to error handler app use function req res next var err new Error Not Found err statu
  • 在运行时将图像添加到 Crystal Report

    我想在运行时将图像添加到水晶报告中 我目前正在使用第二个数据表来执行此操作 其中仅包含一个字节字段 然后在报告上包含一个 blob 字段 然而 这感觉就像一个黑客 如果第一个主表中没有数据 那么由于某种原因图像不会显示 是否可以使用代码或其
  • Web应用程序后台进程,新手设计问题

    经过多年的桌面应用程序开发 我正在构建我的第一个 Web 应用程序 我正在使用 Django Python 但也许这是一个完全通用的问题 我不确定 所以请注意 这可能是一个超级新手问题 我的一个用户进程涉及服务器中的繁重处理 即用户输入一些
  • WPF TreeView 双击后恢复焦点

    我有一个带有 XAML 的 WPF TreeView 如下所示