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

WPF:在UserControl的构造函数中加载数据会破坏Designer

在这个问答内容中,WPF 是 Windows Presentation Foundation 的缩写,它是一种用于构建 Windows 应用程序的框架,提供了一种可视化的方式来构建用户界面。而 UserControl 是 WPF 中的一种控件,它允许开发者将一组控件封装成一个可重用的单元,并在其他地方使用它。

在 UserControl 的构造函数中加载数据会破坏 Designer,这是因为 Designer 是用于在设计时渲染控件的工具,它需要在设计时快速地渲染控件,以便开发者可以实时地看到控件的样式和布局。如果在构造函数中加载数据,那么每次 Designer 尝试渲染控件时,都需要加载数据,这会导致 Designer 变得非常慢,甚至无法使用。

为了避免这种情况,开发者应该在 UserControl 的加载事件中加载数据,而不是在构造函数中。这样可以确保数据只在运行时加载,而在设计时不会加载数据,从而提高 Designer 的性能和响应速度。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器:提供了高性能、可扩展的计算能力,可以满足各种应用场景的需求。
  • 数据库:提供了 MySQL、SQL Server、PostgreSQL 等多种数据库,可以满足不同应用场景的需求。
  • 存储:提供了对象存储服务,可以存储和管理海量数据。
  • 云硬盘:提供了高性能、可扩展的块存储服务,可以满足各种应用场景的需求。
  • 负载均衡:提供了可靠的流量分发服务,可以保证应用程序的稳定性和可用性。
  • 云联网:提供了高速、低延迟的专线接入服务,可以连接多个云服务器。

以上是推荐的腾讯云相关产品和产品介绍链接地址。

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

相关·内容

VisualStudio中提供运行时和设计时支持WPF本地化解决方案

(这同时也意味着无法从XAML文件中去访问构造函数——即使用ODP ObjectType)。要解决这个问题,我们可以ODP上使用MethodName属性。...(另一种选择可能是扩展现有的自定义ResXFileCodeGenerator来标记构造函数为public,但不需要这样做) ? …方法: ?...当您在UserControl添加一个绑定到一个标签时,它将在运行时被正确地显示出来,设计时(例如在Blend),当它被自己加载时也会被正确展示。...不幸是,当您加载包含UserControl窗口时,它将无法展示出来。(这似乎只是Blend工具一个问题,在这种情况下,Visual Studio 2008设计器能够正常展示。)...我理解,将UserControl作为窗口子控件加载问题是,设计器创建控件实例,然后将其添加到窗口中。运行时可用资源不存在,因为实例不是在窗口中创建,因此上面的绑定失败,无法呈现控件。

1.9K20

.NET控件Designer架构设计

比如我们Winform Designer,就设计了一个DragService,用得非常频繁,原因就是Drag,不同View需要协作来完成一些任务,它们只能通过DragService来协调。...二,原来View上盖上一个透明View,把事件劫持掉,这种方式属于比较变态方式,系统如果用多了,让后面的人很难理解原有的设计。...微软Winform Designer处于这种情况时有一个经典变态处理,它需要放一个RuntimeControlDesigner上,但不想让它行为Designer起作用,或者某些情况下有选择让它起作用...wpf中提供了Preview message,某些情况下能够简化这类问题处理,但我相信它灵活性还是远远不如Tool这种把消息集中起来处理方式,因为这种机制把逻辑彻底从ViewModel剥离出来了...View层实现一个IViewService,里面有一个函数:IEnumerable FindViews(Point p),其它对象可以调用这个函数来拿到HitTestIView,再通过

94950
  • WPF 从 用户控件 到 自定义控件

    WPF 从 用户控件 到 自定义控件 独立观察员 2024 年 4 月 29 日 一、用户控件示例:能够朝向上下左右四种方向 WPF ,如果想要复用 Xaml 代码,最先想到肯定是用户控件(UserControl...UserControl Style 里,导致外面使用时,给 UserControl 设置全局样式时不生效(尤其是对于依赖属性),可按照如下结构改造: 不过这又导致 UserControl 上设置了默认值属性...【修正 2】那么自然而然地就会想着把这个样式资源定义到全局可访问地方去(比如 App.xaml),或者使用者引用资源字典: 然后再来使用地方看看,BaseOn 不报错了,全局样式设置时,除了...文件(这个文件资源会被自动加载添加默认样式: 自定义控件类构造函数中就是指定了这个样式,来看看这个指定语句: 也就是指定了 DefaultStyleKey 这个依赖属性默认值: 然后就可以将之前控件模板包括触发器拷贝过来了...从 用户控件 到 自定义控件](https://dlgcy.com/wpf-from-usercontrol-to-customcontrol/)

    14010

    C# WPF MVVM项目实战(进阶①)

    这篇文章还是之前用Caliburn.Micro搭建好框架上继续做开发,今天主要是增加了一个用户窗体TestFormView,然后通过TabControl,将新增窗体加载到主界面上进行分页显示,新增页面引用了...WPF UI:WPF Datagrid合并表头思路 https://mp.weixin.qq.com/s/-x_21jOT4VAxiKhT6fgnhg , 后续有新想法我继续会在此基础上叠加完善...01 — 重要知识点 本篇内容基于CM框架编写,涉及以下知识点: ① 将UserControl添加到主窗体: 首先在主窗体viewmodel定义UserControl public TestFormViewModel...TestFormView { get; set; } 然后构造函数实例化: TestFormView = new TestFormViewModel(); 最后主窗体XMAL附加引用:...ToolTipService.Placement="Right"//工具提示相对原控件打开时方向,并指定工具提示与屏幕边界重叠时行为。

    1.9K20

    WPF 给类库设置设计时使用资源字典

    开发 WPF 类库时,由于类库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件存在,而拿不到资源。...本文告诉大家简单方法,给设计器设置仅在设计时引用资源 WPF XAML ,如果对每个 XAML 控件都引用相同资源,此时设计时将可以愉快跑起来,然而在运行时将会重复创建资源影响性能。...开发 WPF 应用时,入口项目里面,因为入口处有 App.xaml 文件,在这个文件里面加上了各个项目的引用,此时设计器就能知道当前项目引用 XAML 资源字典,因此设计器就能工作 但是开发类库时候...这个特殊文件有文件夹和命名要求,这是 VisualStudio 设计器里面写常量固定路径 项目里面新建 Properties 文件夹, Properties 文件夹里面新建 DesignTimeResources.xaml...,而在运行时是不会加载资源到内存 例如我新建了类库项目 JeenalerenenearWerjilakaw 项目。

    1.9K20

    .NET Core - 解决VS2019.net core WinForms暂时无法使用Designer临时方法

    此篇文章有关于WPF姊妹篇解决VS2019.net core WPF 暂时无法使用 Designer 临时方法 ,但对WPF而言实现起来比WinForms简单很多。...核心思想同样是借壳~ 该方法,只要添加新Win Form或新UserControl,就需要在Classic Framework WinForms项目(.net FrameworkWin Forms...下一步骤,勾选.NET core下"Use preview SDK"解决这个问题。 当然也可使用命令行/Powershell来创建。...项目`CoreHelloForm.Designer以"As Link"方式引用.net core form项目下MainForm相关文件 选中项目CoreHelloForm.Designer,右键...那是因为项目CoreHelloForm.DesignerMainForm.cs 所Link 与MainForm相关文件已经 项目CoreHelloForm 打开。

    2.2K30

    WPF继续响应被标记为已处理事件方法

    WPF冒泡事件或者隧道事件随其层间关系visual tree上层层传递,但是,某些事件传递到某些控件是即”终止“(不再响应相应注册事件),给人一种事件终结者印象。...WPF事件引擎处理控件对应事件时,若检测到该属性为True,就不会调用相应处理程序。...> ScrollViewer控件模版,ScrollViewerMouseButtonDown事件处理事件如下:断点设置会发现鼠标点击时并不会触发。...,并将该处理程序添加到当前元素处理程序集合。...因此我们可以在上面UserControl构造函数添加下面代码:表示gridMain处理相应鼠标点击事件 public UserControl() { InitializeComponent

    94310

    xBIM 实战04 WinForm窗体实现IFC模型加载与浏览

    如果确实需要在传统 WinForm 窗体也要加载并显示BIM(.ifc格式)模型文件该如何处理呢?   ...由于WinForm与WPF技术可以互通互用,所以本文介绍一种取巧方式,WinForm窗体中加载WPF控件,WPF控件渲染BIM(.ifc格式)模型文件。具体操作步骤如下详细介绍。...添加引用后,自动添加了下列WPF基础库。 ? 四、Winform项目中添加WPF用户控件 ?...五、WinForm窗体调用WPF查看器   添加一个WinForm窗体。左侧Panel是 按钮区域,右侧Panel填充窗体剩余所有区域。 ? 打开VS工具箱,可以看到如下栏目 ?...后台逻辑:第四步骤创建了一个WPF用户控件,在此处实例化一个对象 private WinformsAccessibleControl _wpfControl; 构造函数初始化该对象并将对象添加到

    1.4K30

    WPF 多线程 UI:设计一个异步加载 UI 容器

    WPF 多线程 UI:设计一个异步加载 UI 容器 2018-09-08 12:53 对于 WPF 程序,如果你有某一个 UI 控件非常复杂...UI 的卡住不同于 IO 操作或者密集 CPU 计算,WPF UI 卡顿时,我们几乎没有可以让 UI 响应方式,因为 WPF 一个窗口只有一个 UI 线程。 No!...WPF 一个窗口可以不止一个 UI 线程,本文将设计一个异步加载 UI 容器,可以主线程完全卡死情况下显示一个加载动画。...▲ 异步加载效果预览 使用我写 WPF 异步加载控件 AsyncBox 控件名字为 AsyncBox,意为异步加载显示 UI 容器。...这两个可视化树通过 HostVisual 跨线程连接起来,于是我们能在一个窗口中得到两个不同线程可视化树。 由于这两棵树不在同一个线程,于是主线程即便卡死,也不影响后台用来播放加载动画线程。

    3.8K10

    VsxHowTo-把Windows Forms Designer作为自己编辑器(1)

    ()); } }} 我们DesignerLoader类也只是“稍微实现”了一下,只是PerformLoad时候往LoaderHost里加了一个UserControl。...这样LoaderHostRootComponent就是一个UserControl了,设计器加载时候就会加载UserControlRootDesigner。...这其实也是我们重用WinForm Designer最关键一步,我们其他代码都是为了这句服务,因为VS加载什么设计器,是由DesignerHostRootComponentRootDesigner...,所以MapLogicalView方法里,只rguidLogicalView参数为VSConstants.LOGVIEWID_Primary时候返回VSConstants.S_OK。...但这个设计器是有问题,例如拖动控件到设计器后,控件没有自动命名;文档窗口也不会随着修改而自动加入*标记;不能undo/redo;当然,最大问题,不能保存数据

    82520

    用.NET Framework 2.0创建 Form设计器

    如果你添加一个服务,记得设计器被disposed时候移除它。设计器时不时地创建和消毁,如果你没有去清除一个服务的话,旧设计器就会遗留在内存。...这本质上就是使用上面所展示代码加载一个设计器。与装载一个Form相比较,例子还展示了如何装载UserControl或者组件。...示例程序类HostSurfaceManager通过重写这个函数创建了自定义HostSurface: protected override DesignSurface CreateDesignSurfaceCore...设计器载入程序如同你将会期待一样, 负责从持久化介质加载Designer form. 设计器载入程序只有少许需求. 事实上,你能创建Windows Forms designer一个实例。...BasicDesignerLoader提供了除任何数据持久格式外设计者载入程序完全和通常实现. 像 DesignerLoader ,它是abstract, 不处理关于持久化格式任何事情.

    83260

    如何让 WPF 程序更好地适配 UI 自动化

    CheckBox 检查框 combobox ComboBox 组合框 custom UserControl 自定义控件 datagrid DataGrid 数据表 dataitem DataItem...容器与布局类控件并没有暴露给 UI 自动化(例如 Grid、StackPanel、Border 等,并没有出现在自动化测试)。 用户控件(UserControl)暴露给了 UI 自动化。...然而,实际情况却并不是这样…… 哪些情况破坏 WPF UI 自动化 很多时候,我们写代码时,可能太过于关注最终做成了什么样子,而忽略了控件原本层次结构和属性含义,这就可能导致我们程序暴露给...WPF 适配 UI 自动化最佳实践 了解到 WPF UI 自动化已有特点后,我们将以上坑点一个个击破,就是我们推荐最佳实践。...如果一定要做特别的控件交互(没有任何现有控件可以代表这个交互方式),那么充分利用用户控件(UserControl自动暴露给 UI 自动化特点,做一个用户控件。

    41520

    【我们一起写框架】MVVMWPF框架之序篇(一)

    但写好坏就另说了,所以写框架这件事还是与经验挂钩认知,技术视野相对更高,技术范围更广的人写框架更好。所以,我认为,[实战]架构师和高级程序员,本质上没有区别,都是程序员。...ViewModel:每个WPF页面有唯一ViewModel,用来处理页面业务逻辑。 Utility:存放一些常规处理类。 DTO:存放数据传输用实体类。 Proxy:获取数据代理类。...WPF项目中创建WindowMain窗体,并在VM创建对应ViewModel。...然后App.Xaml.cs文件重写启动函数,代码如下: protected override void OnStartup(StartupEventArgs e) { VM_WindowMain...但Page和UserControl是被Window使用,不能直接呈现,所以,使用Page和UserControl之前,我们需要编写MVVM框架,用于WPF页面和ViewModel传递信息Command

    2.1K30

    C# 一个基于.NET Core3.1开源项目帮你彻底搞懂WPF框架Prism

    --概述 这个项目演示了如何在WPF中使用各种Prism功能示例。如果您刚刚开始使用Prism,建议您从第一个示例开始,按顺序从列表开始。每个示例都基于前一个示例概念。...Navigation Journal 了解如何使用导航日志 部分项目演示和介绍 ① BootstrapperShell启动界面: 这个主要演示Prism框架搭建用法: step1:nuget上引用...var bootstrapper = new Bootstrapper(); bootstrapper.Run(); } } step3:引导程序设置启动项目...region.Add(view); } } ③ActivationDeactivation:视图激活和注销 MainWindow.xaml.cs:这里在窗体构造函数中注入了一个容器扩展接口和一个...> MessageViewModel.cs:vm把界面绑定命令委托给SendMessage,然后方法SendMessage中发布消息: using Prism.Commands; using

    1.6K20

    .NETC# 你可以代码写多个 Main 函数,然后按需要随时切换

    .NET/C# 程序从 Main 函数开始执行,基本上各种书籍资料都是这么写。不过,我们可以写多个 Main 函数,然后项目文件设置应该选择哪一个 Main 函数。...你可能觉得这样没有什么用,不过如果你应用程序不同编译条件下有不同启动代码,或者你需要持续去大范围修改启动代码,那么做一个 Main 函数选择器是一个不错选择。 在哪里选择 Main?...带有 Main 函数项目上 “右键 -> 属性 -> 应用 -> 启动对象”,可以看到我们 Main 函数,默认值是 “未设置”。...▲ 选择 Main 函数 我们保持这个值没有设置情况下,如果写两个 Main 函数,那么就会出现编译错误。...▲ 选择一个 Main 函数 我们准备一个 WPF 程序 现在,我们来一些更复杂操作。现在把我们项目换成一个普通 WPF 项目。

    54810

    VsxHowTo -- 把Windows Forms Designer作为自己编辑器(3)

    我们PackageInitialize方法来注册这两个事件: protected override void Initialize(){ Trace.WriteLine(string.Format...toolbox根据当前DesignerHost里RootDesignerToolboxItemFilter,和所有的ToolboxItemToolboxItemFilter相匹配,匹配通过就显示...所以我们这个例子里,RootComponent是一个UserControl。怎样才能给UserControl对应RootDesigner添加ToolboxItemFilterAttribute呢?...做一个控件,继承UserControl,把它作为RootComponent,给这个控件指定自己Designer,然后就可以在这个Designer上添加ToolboxItemFilterAttribute...不知道为什么,我们Package程序集如果不在gac里的话,vs实验室不能加载MyRootControlDesigner,调试时候明明已经看到CurrentDomain里已经有我们这个程序集了。

    79010
    领券