首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF:当我将代码移动到另一个DLL时,不再调用OnApplyTemplate

好的,以下是我对WPF中代码移动到另一个DLL时不再调用OnApplyTemplate的解释:

WPF是Windows Presentation Foundation的缩写,是一种面向对象的编程框架,用于创建Windows平台上的图形用户界面应用程序。WPF使用XAML来定义用户界面元素,并使用代码来控制应用程序的逻辑和布局。

在WPF应用程序中,OnApplyTemplate方法是一个被调用的方法,当WPF应用程序需要显示一个新的模板或元素时,它会调用这个方法。在OnApplyTemplate方法中,可以获取到当前模板或元素的对象,并根据需要执行一些操作,例如添加子元素、设置属性等。

当将代码移动到另一个DLL时,会破坏WPF应用程序的模板和元素对象,因此不再调用OnApplyTemplate方法。这可能会导致WPF应用程序无法正常显示或运行。

因此,在将代码移动到另一个DLL时,需要确保不会破坏WPF应用程序的模板和元素对象,以避免出现这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • WPF源代码分析系列一:剖析WPF模板机制的内部实现(一)

    前者比较容易理解,这里我们主要讨论后者,即WPF的模板机制,方法是通过简单分析WPF的源代码。由于内容较多,为了便于阅读,分成一系列共5篇文章来叙述。...一、从FrameworkTemplatevisual tree 我们知道尽管WPF中模板众多,但是它们的类型无外乎四个,这四个类的继承关系如下图所示: 2238515-20201210170611241...用代码工具我们可以看到,这个方法只在FrameworkElement.ApplyTemplate()里被调用了一次,这意味着这个方法是WPF可视化元素实现模板应用的唯一入口,其重要性无论如何强调都不为过...OnPostApplyTemplate(); return visualsCreated; } 方法的注释表明FrameworkElement和其子类在每次measure都会调用这个方法...tree,并调用虚方法OnApplyTemplate()(这个虚方法在开发自定义控件时经常需要重写,此时visual tree已经生成并可以访问了);最后调用虚方法OnPostApplyTemplate

    1.1K20

    OEA 中 WPF 树型表格整体重构

    TreeGrid 不再依赖 TreeView、GridView,而是直接从 ItemsControl 上继承下来,自定义逻辑树、可视树结构,自定义绘制过程。代码有点多,看下最终的效果: ? ?...界面线程会在需要不断地调用 Measure,我们可以把自定义控件中很多重要的逻辑都可以在 MeasureOverride 中实现。...在查看 WPF 源码,可以经常看到一些代码,在通过可视树关系查找指定类型的元素后,再要对元素的可空性进行判断。而经常做这些可空性检测的原因是,WPF 控件的设计要求,各控件互相之间没有必然的联系。...关于 OnApplyTemplate 与 Measure 的关系。    ...OnApplyTemplate 只会在 ApplyTemplate 方法第一次执行时被调用。我们经常会重写控件的这个方法,在其中查找指定的可视树元素。

    1.8K60

    WPF 渲染原理

    WPF 最主要的就是渲染,因为 WPF 是一个界面框架。想用一篇博客就能告诉大家完整的 WPF 渲染原理是不可能的。本文告诉大家 WPF 从开发者告诉如何画图像在屏幕显示的过程。...WindowsCodecs.dll 这时另一个底层的图片支持代码,用来支持 WPF 旋转、放大图片等,这是一个使用本地代码编译的,提供了很多图片的加密解密,可以让 WPF 把图片画在屏幕 核心系统层...从渲染线程调用 milCore ,在通过 milCore 调用 DirectX 的过程就先简单说过。从 DirectX 绘制完成屏幕显示的过程也是简单告诉大家。...,这里说的渲染是包括两个方面,一个是 WPF 把内容画到窗口,也就是上面说的自定义消息,还有另一个就是把窗口内容画在屏幕。...通过 DWM 合成技术可以每个绘制的窗口认为是一个位图,通过对位图处理添加阴影等,做出好看界面。

    2.9K31

    一个大型客户端应用项目迁移到 dotnet 6 的经验和决策

    这里面涉及客户端应用独立管理运行时环境,多个 Exe 的冲突处理和安装完成之后的文件夹体积的矛盾。...这部分深度的定制将会根据定制的不同,部分进行开源 变更后当前的开发架构分层如下图 让 WPF 作为基础库的一部分而存在,而不再放入运行时里面。...如此可以在开发使用私有的版本 在服务器构建,设置让应用软件的入口程序集不再对定制部分的程序集的引用,从而让构建出来的所有程序集不包含对定制部分的程序集的引用;构建将定制部分的程序集的引用放入 runtime...│ WindowsBase.pdb │ └─Lib1.dll 可以看到开发的输出的文件夹没有包含 Runtime 文件夹,但是将定制的程序集放在输出文件夹,例如上面的定制的 WPF 程序集内容。...只能带给应用自己 如上文,做每个 Exe 的独立发布是不合适的,只能放入输出文件夹的 runtime 文件夹 调用插件进程 有插件进程是放在 AppData 文件夹的,不在应用的安装输出文件夹里面,如何调用插件进程让插件进程可以使用到运行时

    1.6K10

    dotnet 读 WPF 源代码笔记 渲染层是如何字符 GlyphRun 画出来的

    本文和大家聊聊从 WPF 的渲染层获取到 GlyphRun 数据,调用 DirectX 的各个渲染相关方法的过程,也就是 WPF 绘制文本字符的原理或者实现方法 大家印象中的绘制一段文本是调用 DrawText...这是一个有趣的思路,在 WPF 渲染层里面,调用 DirectWrite 层让 GlyphRun 输出 Alpha 纹理,接着调用 DirectX 绘制一个矩形,让矩形填充上文本前景色画刷,同时 Alpha...更多的 WPF 源代码博客请参阅我的 博客导航 由于 WPF 具备软硬渲染的能力,对于软渲染来说走的是另一个分支逻辑,有一些细节上的差异。...在拿到 pAlphaMap 数组值之后,为了在 DirectX 渲染使用,还需要转换为纹理信息 转换为纹理信息是在 CD3DSubGlyph::ValidateAlphaMap alpha 纹理内容放入...CMilSlaveRenderData::Draw(IDrawingContext * pIDC) 行 845 C++ 只不过软渲染不再需要调用 CD3DGlyphBank::CreateTank

    1K30

    WPF 弹出 popup 里面的 TextBox 无法输入汉字

    或者升级 win10 系统。如果刚好两个方法都不能使用,那么通过代码也可以解决。...解决的方法是让输入法知道控件的句柄,这需要一个 win32 的 dll ,传说中的 User32.dll ,这个dll有SetFocus这个方法,请通过下面的代码在Popup打开时调用。...,微软已经修复 修复在 Popup 输入法不跟随 在 Popup 里的 TextBox 输入可能出现输入法未跟随编辑框,这时需要调用 Win32 的方法 [DllImport("User32.dll"...的 TextBox 无法输入问题 刚刚 Siberia 问了我一个问题,为什么 WinForms 弹出的 WPF 的文本框无法输入数字,但是可以输入其他的内容 一开始我认为的是绑定的问题,如果一个控件绑定了另一个控件...拿到输入,但是如果数字不经过输入法就在 WinForms 收到数字 解决的方法是调用 EnableModelessKeyboardInterop 传入 WPF 就可以 Window winWPF =

    1.7K10

    WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员

    整个 WPF 框架的大体设计是十分好的,可以在框架里面遵循对修改关闭的原则,定制化更多的是做注入,调用 internal 权限成员 本文告诉大家如何给 WPF 框架加入 InternalsVisibleToAttribute...程序集,在这个程序集里面自己新建签名,然后配置 WPF 框架各个项目 做法就是先通过 dotnet 强签名下使用 InternalsVisibleToAttribute 给程序集加上友元 拿到签名,...下一步就是这个 WPF 仓库构建一下,可以使用命令行方式构建,详细请看 手把手教你构建 WPF 框架的私有版本 在构建完成之后,从 WPF 的 artifacts 文件夹里面,可以在 artifacts...\packaging\Release\Microsoft.DotNet.Wpf.GitHub 文件夹找到构建输出的所有内容 有两个方法,一个是打包为 NuGet 包,另一个方法是作为 Dll 引用。...使用 x86 和 x64 需要和 WPF 打包关联,我当前用的都是 x86 下的 拿出来空白 WPF 的发布输出内容,放在 CustomWPF\Lib 文件夹 artifacts\packaging

    56820

    WPF 弹出 popup 里面的 TextBox 无法输入汉字 修复在 Popup 输入法不跟随在 WinForms 弹出的 WPF 的 TextBox 无法输入问题

    或者升级 win10 系统。如果刚好两个方法都不能使用,那么通过代码也可以解决。...解决的方法是让输入法知道控件的句柄,这需要一个 win32 的 dll ,传说中的 User32.dll ,这个dll有SetFocus这个方法,请通过下面的代码在Popup打开时调用。...,微软已经修复 修复在 Popup 输入法不跟随 在 Popup 里的 TextBox 输入可能出现输入法未跟随编辑框,这时需要调用 Win32 的方法 [DllImport("User32.dll"...的 TextBox 无法输入问题 刚刚 Siberia 问了我一个问题,为什么 WinForms 弹出的 WPF 的文本框无法输入数字,但是可以输入其他的内容 一开始我认为的是绑定的问题,如果一个控件绑定了另一个控件...拿到输入,但是如果数字不经过输入法就在 WinForms 收到数字 解决的方法是调用 EnableModelessKeyboardInterop 传入 WPF 就可以 Window winWPF =

    2.5K20

    WPF 同一窗口内的多线程多进程 UI(使用 SetParent 嵌入另一个窗口)

    WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) 发布于 2018-07-11 13:35...更新于 2018-07-12 11:44 WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习的经验。...阅读本文收获一份 Win32 函数 SetParent 及相关函数的使用方法。...---- WPF 同一个窗口中跨线程访问 UI 有多种方法: 使用 VisualTarget (本文) 使用 SetParent 嵌入另一个窗口 前者使用的是 WPF 原生方式,做出来的跨线程 UI 可以和原来的...这是 WPF 窗口刚刚获得 Windows 窗口句柄的时机,在此事件中,我们可以最早地拿到窗口句柄以便进行 Win32 函数调用

    4.2K10

    WPF 已知问题 在 WIC 层处理异常图片时 可能由于出现未处理异常导致进程退出

    在一些奇怪的系统上,解码一些奇怪的图片时,可能在解码器层抛出未捕获的本机异常,从而导致进程退出 我使用 ProcDump 工具抓到了一台服务器上 WPF 应用程序打开某个图片文件,进程崩溃的问题,通过...通过如下调用堆栈等信息,可以看到是在 WindowsCodecs.dll!...详细请看 升级 dotnet core 之后 HandleProcessCorruptedStateExceptions 无法接住异常 我将此问题报告给 WPF 官方:https://github.com...想想,要是你调用了某个系统组件,这个组件炸了,那你的应用要不要跟着炸,如果不跟着炸,会不会造成更大的危害,比如损坏数据等等 为什么 WIC 层系统组件存在问题会影响 WPF 应用程序?...这是因为直接走 WIC 解码本身就有问题,不通过 WPF 自己手动调用 WIC 的方法也能复现,请看 dotnet win32 使用 WIC 获取系统编解码器 或者是通过 DirectX 方式走,请看

    20010
    领券