WPF 4.5 父子行为是否发生了变化:我们现在可以毫无例外地向另一个父级添加一个子级?

2024-03-03

在 .Net 4.0 中,以下代码抛出InvalidOperationException与消息“指定的元素已经是另一个元素的逻辑子元素。首先断开它。”

var parent = new System.Windows.Controls.ContentControl();
var child = new System.Windows.Controls.Button();

parent.Content = child;

var parent2 = new System.Windows.Controls.ContentControl();
parent2.Content = child;    // throws InvalidOperationException in .Net 4.0, not in 4.5

但是,在安装了 .Net 4.5 的计算机上运行此代码会导致no抛出异常。这似乎会导致可视化树出现一些奇怪的状态,显示为不正确的 UI。

为什么没有例外? The throw声明似乎仍然存在于 .Net 4.5 中FrameworkElement.AddLogicalChild。什么会导致它不被抛出?

我很高兴接受行为改变是有充分理由的,并且我必须更改我的编码,但是,就目前情况而言,UI 损坏的静默失败似乎是从强异常的倒退,当显式断开连接时FrameworkElement逻辑树中的内容被遗忘了。


有时,一个孩子有多个逻辑父母是有意义的,例如在布局到布局动画 http://www.codeproject.com/Articles/24982/Conceptual-Children-A-powerful-new-concept-in-WPF。我猜测 WPF 团队决定是时候让开发人员决定何时以及如何使用它,而不是禁止它。

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

WPF 4.5 父子行为是否发生了变化:我们现在可以毫无例外地向另一个父级添加一个子级? 的相关文章

  • 消息框按钮文本

    我环顾四周 似乎所有内容都可以在消息框中编辑 禁止按钮上的文本 WPF http en wikipedia org wiki Windows Presentation Foundation C MessageBox Show Generic
  • If 语句中 Bool 计算错误

    只是为了好奇 我的代码有这个问题 e被评估为false 我知道通过查看数据库中的数据会得到错误 但 if 语句并不关心这一点 并假设这是真的 并试图抛出异常 有什么想法吗 edit 没有 在第 16 行末尾 价值false是正确的 我已经检
  • 如何将字符串解析为 UNIQUEIDENTIFIER?

    我正在编写一个实体框架 LINQ 查询 其中我想将字符串解析为 UNIQUEIDENTIFIER 又名 GUID 作为WHERE clause public IEnumerable
  • 为什么该字符串的长度比其中的字符数长?

    这段代码 string a abc string b A C Console WriteLine Length a 0 a Length Console WriteLine Length b 0 b Length outputs Lengt
  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 从同步上下文调用异步方法

    我在代码中通过 HTTP 调用服务 最终使用 HttpClient SendAsync 方法 然后从 WebAPI 控制器操作调用此代码 大多数情况下 它工作得很好 测试通过 但是当我在 IIS 上部署时 我遇到了死锁 因为异步方法调用的调
  • 如何使用 .NET 4 运行时运行 PowerShell?

    我正在更新管理一些 NET 程序集的 PowerShell 脚本 该脚本是为针对 NET 2 与 PowerShell 运行的框架版本相同 构建的程序集编写的 但现在需要使用 NET 4 程序集以及 NET 2 程序集 由于 NET 4 支
  • 在 MVVM 中设置可见性的最佳方法

    In my View我有三个对象 其中一个在任何给定时间都是可见的 在我的Model我有一个枚举来代表这三个状态 我应该如何实施我的ViewModel a 为每个对象的可见性创建一个布尔值 并将每个对象绑定到该布尔值 使用 bool gt
  • App 对象中的 Log4Net?

    我正在开始在 WPF 桌面应用程序中进行日志记录 使用 Log4Net 作为日志记录组件 这是我的问题 在一个简单的桌面应用程序中 是否有任何理由不将我的记录器实例化为 App 类 App xaml cs 的属性 就像这样 public p
  • 为什么 System.Math 有 Sin、Cos 等外部方法?

    MethodImpl MethodImplOptions InternalCall public static extern double Sin double a 其原因何在 MethodImplOptions InternalCall表
  • 如何防止控件在 TableLayoutPanel 内调整大小时视觉上滞后?

    我有一个基于多个嵌套的中等复杂度的布局TableLayoutPanels 调整窗体大小会导致更深嵌套表内的控件在视觉上滞后于调整大小 首先 这使得它们看起来像是在调整表单大小时四处移动 但更糟糕的是 当它们滞后到足以离开分配的表格单元格时
  • 通过样式设置 DataGridCellsPresenter 的 ItemsPanel 不起作用

    我正在尝试设置ItemsPanel of a DataGridCellsPresenter在我的窗口的资源中 Bu
  • 从 SQL Server 读取十进制值时出现溢出异常

    我想知道这是一个错误还是我做错了什么 我正在加载值SqlDataReader来自 SQL Server 2008 数据库 但在某些情况下 它无法将 SQL 值转换为 net 值 NET 4 0 我已将其追溯到一个测试用例 它演示了实际问题
  • 没有端点在 net.pipe://localhost/ 上监听

    我有两个 WCF 服务托管在 Windows Server 2003 计算机上的单个 Windows 服务中 如果 Windows 服务需要访问任一 WCF 服务 例如发生定时事件时 它将使用公开的五个命名管道端点之一 不同的服务协定 该服
  • .NET Core == .NET Framework 5 吗?

    我一直在寻找书籍来研究最新的 NET Framework 据我所知 NET 最高为 4 6 但 ASP NET 最高为 5 核心 NET Core 是 NET 5 的名称还是我们目前仍使用 NET 4 6 去引用斯科特 汉塞尔曼 http
  • 如何在标准 WPF ListView 中启用 UI 虚拟化

    我正在使用 NET 4 5 VS2012 并且我有一个 ListView 看起来像这样
  • WPF:使用 StringFormat={}{0:F2} 进行文本框绑定。不显示零

    我使用以下 XAML 将对象绑定到 TextBox
  • 带有命令绑定的 KeyBinding 不适用于 TextBox UpdateSourceTrigger LostFocus

    我正在使用 MVVM 并遇到以下问题 我的 TextBox Text 与 UpdateSourceTrigger LostFocus 绑定 这就是用户想要的 我有一个带有 SaveCommand CommandBinding 的按钮 这有效

随机推荐

  • 如何显示外部 PostgreSQL 连接的 WORK_MEM?

    我知道我可以使用SHOW WORK MEM 在psql中查看当前使用的连接的值 但其他连接呢 我有一个应用程序可以打开许多连接并动态更改WORK MEM基于上下文 我想监控这些WORK MEM进行更改以确保它们得到应用 换句话说 我想 调整
  • 有效的 MFC ID 范围

    这让我很困惑 我正在读这个技术说明 https learn microsoft com en gb cpp mfc tn020 id naming and numbering conventions它指出 Prefix Resource t
  • 如何在 .xib 文件上创建的 UIViewController 中设置 UITableView

    我有一堂这样的课 interface ExerciseLogDetails UIViewController
  • AVURLAsset获取视频大小

    这真是令人沮丧 我正在尝试获取 AVURLasset 的大小 但尽量避免naturalSize因为 Xcode 告诉我 这在 iOS5 中已被弃用 但是 替代品是什么 我找不到任何关于如何在不使用 naturalsize 的情况下获取视频尺
  • CRT 库类型

    我试图更好地掌握 Visual Studio 2013 中的 CRT 库选项 C gt 代码生成 gt 运行时库 以及如何知道选择哪个选项 以及何时更改默认值 From MSDN http support microsoft com en
  • 如何在java应用程序中使用webRTC特定模块

    我有一个简单的java应用程序应用程序客户端可以向服务器发送 接收纯音频 UDP 数据包 服务器将音频数据包转发给除发送者之外的所有人 现在我该如何使用webRTC 回声消除我的应用程序端的模块或其他功能模块 我发现可以使用 JNI 和 w
  • .htaccess 拒绝子文件夹中的文件

    我想阻止对 sub folder index php 的访问 但不阻止对其他任何地方的 index php 的访问
  • 在 Jade 视图中使用 javascript 代码 - if(variable) 显示未定义而不是传递

    所以这是一个反复出现的问题 我还没有找到另一个例子 所以这里是 渲染 Jade 模板时我得到 variableName undefined即使在使用时 if variableName 在模板中 示例 我使用它作为 信息 闪存消息的一部分 i
  • 具有不同 ID 的列的总和?

    我有一个包含多个 ID 的表 需要一个查询来返回每个 ID 的列之和 Calls 表看起来像这样 EmployeeID TypeOfCall InvoiceAmount John NC 50 john NC 100 Joe NC 76 Jo
  • 如何创建我自己的 shell 来替换 e4 RCP 中 MTrimmedWindow 中创建的 shell?

    有没有办法用用户定义的窗口替换 Eclipse RCP 为 MTrimmedWindow 生成的 shell Eclipse 创建一个具有特定样式类型的 shell 该样式类型只能在创建时提供 我想从为 MTrimmedWindow 创建的
  • Compose LazyColumn 选择一项

    我想选择 LazyColumn 的一项并更改文本颜色 如何识别选择了哪个项目 Code val items listOf Pair A 1 Pair AA 144 Pair BA 99 var selectedItem by mutable
  • 如何将 { 和 } 放入格式字符串中[重复]

    这个问题在这里已经有答案了 我试图在运行时生成一些代码 在其中放入一些样板内容 并允许用户输入实际的工作代码 我的样板代码看起来像这样 using System public class ClassName public double Th
  • 为什么有人声称 Java 的泛型实现很糟糕?

    我偶尔听说 Java 在泛型方面做得不太好 最近的参考 here https stackoverflow com questions 457822 what are the things java got right 请原谅我的经验不足 但
  • 具有动态范围和 customOrder excel 的排序宏

    我正在尝试制作一个多级排序宏 而行数是动态的 我一直在摆弄一些测试数据来尝试让它工作 但是我不断从 Excel 中收到 1004 运行时错误 希望第二双眼睛能帮助解决这个问题 这是测试数据 A B C D Num Status Junk J
  • 检查接收者是否拿起电话

    在 Android 中 我需要确定接听电话是否已接听 这似乎不可能 因为 TelephonyManager 不提供该状态 其他人建议查看通话记录列表并检查最后呼叫号码的持续时间 这不太好 因为最后拨打的号码可能是几小时或几天前 还有其他建议
  • 禁用 Webpack 的捆绑

    我想使用 webpack 作为 typescript 构建工具 这样每个 typescript 文件都会被翻译成 1 个 js 文件 webpack 指南有这样的配置 module exports entry app tsx module
  • 带有动画 GIF 的 TGIFImage - 事件不起作用 - 如何检测动画进度?

    德尔福的TGIFImage有以下事件 OnPaint OnAfterPaint OnLoop OnEndPaint 但在显示动画 GIF 时 这些事件都不会被调用 我使用以下代码来显示动画 GIF FGif Image1 Picture G
  • 什么是白名单和黑名单数据?

    我正在阅读有关 XPCOM 组件开发的内容 我遇到了这些称为白名单数据和黑名单数据的术语 我试图在谷歌上查找 但无法找到 我不知道它与编程有何关系 所以如果我把问题放在错误的地方 请原谅我 白名单和黑名单是过滤数据的两种方式 如果您有白名单
  • 回调与 lambda

    假设我有以下代码想要重构 int toFuture precalc int calc 5 foobar x 3 postcalc return calc int toPast precalc int calc 5 foobar y 9 po
  • WPF 4.5 父子行为是否发生了变化:我们现在可以毫无例外地向另一个父级添加一个子级?

    在 Net 4 0 中 以下代码抛出InvalidOperationException与消息 指定的元素已经是另一个元素的逻辑子元素 首先断开它 var parent new System Windows Controls ContentC