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

C# API中的模型和它们的接口设计

它返回的是IEnumerable而不是IEnumerable,这让它看起来就像是一个C# 1的接口,而不是泛型。...属性变更通知 属性变更通知在很多情况下都很有用,不过更常见的是与MVVM设计模式相关联。...由于这个错误,没有人可以实现带有批量更新支持的INotifyCollectionChanged,除非他们100%确定集合类不会被用在WPF中。 因此,我的建议是不要试图从头开始创建自定义集合类。...文档里没有提到这些,因为它没有定义一个子对象是否被认为是“对象内容”的一部分。我个人偏好让IsChanged包含子对象的变化,并为数据存储添加单独的IsChangedLocal属性。...你花在弥补缺口上的时间,比如不一致的命名约定、缺少的特性和不正确实现的接口,最终都会获得回报。 关于作者 ?

1.7K20

C#的桌面应用程序开发

C#是开发桌面应用程序的强大工具,特别是借助.NET Framework和.NET Core。...本文将深入探讨C#中两种主流的桌面应用程序开发框架:Windows Forms和Windows Presentation Foundation (WPF),以及它们的使用场景和最佳实践。...控件(Controls):文本框、按钮、列表框等用户可操作的界面元素。布局(Layout):控件在窗口中的排列方式。事件(Events):用户与控件交互时触发的操作。...)WPF是用于构建Windows客户端应用程序的现代UI框架,使用XAML作为其界面定义语言。...; }}桌面应用程序的高级主题MVVM架构MVVM(Model-View-ViewModel)是一种设计模式,用于分离UI(视图)和业务逻辑(模型),并通过视图模型进行交互。

2.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C#语法——事件,逐渐边缘化的大哥。

    最常见的事件用途是窗体编程,在Windows窗体应用程序和WPF应用程序中。 当在窗体中点击按钮,移动鼠标等事件时,相应的后台程序会收到通知,再执行代码。...sender:代表源,即触发该事件的控件。 e:代表事件参数,即触发该事件后,事件为被触发的委托,传递了一些参数,以方便委托在处理数据时,更便捷。 根据这个原理,我们可以分析出很多东西。...比如,当控件DataGrid的事件被触发时,只要查看一下sender的真实类型,就可以知道,到底是DataGrid触发的事件,还是DataGridRow或DataGridCell触发的了。...比如WPF虽然支持事件驱动,但MVVM在WPF下的表现堪称完美,所以WPF下的事件几乎没有人用了。...再比如前端的Angularjs等框架,提供了优质的MVVM使用效果,也让新的前端设计师逐渐放弃了事件。 所以,事件在未来的编程中,很可能将不在有那么重要的地位了。

    1.7K30

    C# 值得永久收藏的WPF项目实战(经典)

    01 简介 之前也写过好多篇CM框架相关的项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM项目实战...(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF...mvvm模式下combobox绑定(list、Dictionary) C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅 但是可能这些都是把一个综合性的项目分多个部分分别讲述的...02重要知识点 CM框架的配置和启动; CM框架自带ioc容器SimpleContainer用法; MVVM开发模式; 事件聚合器EventAggregator进行事件发布和订阅; 属性通知: ① CM...} [AddINotifyPropertyChangedInterface]:需要引用第三方库PropertyChanged.Fody,加上之后类里面的属性变更后会自动通知界面,无需再一个个单独触发

    5K10

    C# WPF MVVM开发框架Caliburn.Micro入门介绍①

    MVVM 简介 MVVM源于微软的软件开发架构模式。MVVM的开发基于事件驱动,实现UI层和逻辑层的分离,从而使UI设计人员和程序员各施其职。...此外,我们将检查方法的签名并正确构造ActionMessage参数。可以关闭或自定义此机制。您甚至可以更改或添加不同控件的约定。...Screens 和Conductors Screen、ScreenConductor和ScreenCollection模式支持基于模型的活动或当前项目跟踪,强制执行屏幕生命周期,并在应用程序中优雅地关闭或取消关闭...只需向它传递一个VM实例,它就会找到视图,必要时将其包装在窗口中,应用您配置的所有约定并显示窗口。...PropertyChangedBase 和BindableCollection 如果没有INotifyPropertyChanged的基本实现,什么自尊的WPF/SL框架可以实现?

    1.8K20

    .NET周刊【8月第4期 2024-08-25】

    WPF:MVVM的由来与属性绑定的过程 https://www.cnblogs.com/zhuiyine/p/18372384 本文介绍了WPF中的MVVM设计模式及其数据绑定过程。...MVVM模式有助于分离业务逻辑和用户界面,便于单元测试和维护。文章通过一个简单的加法实例,讲解了MVVM的实现步骤,包括数据属性和命令属性的创建与绑定。...详细分析了双向绑定的实现机制,解释了INotifyPropertyChanged接口的作用。文中还讨论了命令属性的执行时机问题,强调了用户交互后命令才被触发执行的原理。...,通过查看源码解释了关键类和方法的实现,并分析了Socket关闭异常的问题,最后总结了Fleck源码中使用的设计模式和异常处理方式。...VirtualStorageLibrary 简介:内存中树结构的 .NET 解决方案 hanachiru/RapidEnum:用于 C#/.NET 的带有 SourceGenerator 的枚举实用程序

    5700

    XAML中的响应式布局技术

    WPF设计之初响应式设计的概念并不流行,那时候大部分网页设计师都按着宽度960像素的标准设计。...UWP提供了AdaptiveTrigger这个状态触发器,它以MinWindowWidth和MinWindowHeight未条件,根据页面宽度或高度进入设定好的不同状态(通常来说只使用MinWindowWidth...在 Auto 模式下,导航视图会进行自适应,在窗口狭窄时为 LeftMinimal,接下来为 LeftCompact,随后在窗口变宽时为 Left。 ?...--some xmal--> 这种时候MVVM的优势就体现出来了,因为VIEW和VIEWMODEL解耦了,VIEW随便换,而且整个UI显示隐藏说不定比多个小模块独自改变性能更好...ViewBox ViewBox可以根据自身大小放大或缩小它的Content元素,某些情况下它是WPF和UWP平台的终极响应式设计解决方案,因为WPF/UWP元素都是矢量元素所以大部分元素都可以无损缩放(

    2.3K10

    WPF面试题-来自ChatGPT的解答

    而 ControlTemplate 定义了控件的视觉结构和布局,包括控件的可视元素、布局容器、触发器等。...WPF是微软推出的用于创建Windows应用程序的技术,它在设计上非常适合MVVM模式。WPF提供了强大的数据绑定机制和命令系统,使得开发者可以更轻松地实现MVVM架构。...外观:Window通常具有标题栏、边框和窗口控制按钮(最小化、最大化、关闭等),可以通过样式和模板进行自定义。而Page通常没有标题栏和边框,它的外观完全由其内容决定。...生命周期:Window具有自己的生命周期,当窗口关闭时,应用程序通常会退出。而Page的生命周期通常由导航框架管理,当页面从导航框架中移除时,它可能会被销毁或缓存。...Uno Platform:Uno Platform是一个开源的、跨平台的用户界面框架,它允许开发人员使用C#和XAML来构建跨平台的应用程序。

    44730

    重温《Framework Design Guidelines》

    常见被违反的规范 今年升级一个核心代码从很久以前的代码改写过来的软件,各种不符合C#代码规范的代码让我感到难以维护;去年系统工程师退休前留给我们的一个代码更是让我受到会心一击。...我使用C#多年来见到过很多不规范的代码,于是试着参考书中的规范,列出其中一些来常见的错误以及一些问题。...2.6 事件 要用受保护的虚方法来触发事件。 要让触发事件的受保护的方法带一个参数,该参数的类型为事件参数类,该参数的名字应该为e。...例如,在窗口关闭之前发生的close事件应该命名为Closing,而在窗口关闭之后发生的应该命名为Closed。...一些想法,关于XAML元素的命名 我不记得有在哪里见过XAML上元素命名的规范(只看到XamlName语法),总之就是要符合C#的的通用命名规范。

    1.3K41

    WPF|快速添加新手引导功能(支持MVVM)

    前言 案例一 站长分享过 眾尋 大佬的一篇 WPF 简易新手引导 一文,新手引导的效果挺不错的,如下图: 该文给出的代码未使用 MVVM 的开发方式,提示框使用的用户控件、蒙版窗体样式与后台代码未分离...案例二 开源项目 AIStudio.Wpf.Controls,它的新手引导效果如下: 此开源项目也有参考上文(WPF 简易新手引导),并且重构为 MVVM 版本,方便绑定使用。...添加Nuget包2:Prism.DryIoc 使用该包,主要是使用 Prism 封装的一些 MVVM、IOC 功能,方便协助开发。...i 命名空间 主要用此命名空间下的触发器,事件触发属性更改。...GuideControl:引导控件,用于目标控件无法获取到自己的窗体这种(即无法获取在窗体中的位置),比如您开发的程序为第三方程序插件这种,上面的代码即是使用此引导控件实现的效果。

    2.5K10

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    23.说出使用WPF而不是Windows窗体的一些优点使用 WPF 代替 Windows 窗体的优点: XAML 使更容易的创建和编辑 GUI,并允许在设计模式 (XAML) 和后台代码(C#、VB.NET...使用硬件加速来绘制 GUI,以获得更好的性能。 24.WPF中的命令设计模式和ICommand是什么?ICommand 是 MVVM 的核心组件。...冻结的 Freezable 也可以跨线程共享,而未冻结的 Freezable 则不能。 尽管 Freezable 类有许多应用程序,但 WPF中的大多数 Freezable 对象都与图形子系统相关。...26.什么是MVVM?MVVM(Model View ViewModel)是一个在WPF中制作应用的框架。 MVVM 与 MVC 框架相同。 它是一个三层架构,我们可以使用 MVVM 进行松耦合开发。...进行命中测试相对来源 (FindAncestor) 28.在WPF应用程序集中添加新文件时,Page和Window有什么区别?页面旨在用于导航应用程序(通常带有后退和前进按钮,例如浏览器)。

    53222

    【译】基于XAML的跨平台框架对比分析

    备注 MVU模式 .NET MAUI对传统上认为的带有 C# Markup and Comet的MVU模式具有最完整的支持....它使用与 UWP/WinUI相同的XAML方言和对象模型,这使得它在XAML和C# 100% 兼容。Avalonia和MAUI都偏离了过去的XAML版本,与WPF或UWP/WinUI都不兼容。...Uno Platform试图覆盖整个UWP的对外暴露的API(API-surface),这包含大量的API。整个API 是自动生成的,其中许多功能未实现stubs。...这意味着大多数非 UI的API不可用,如果在应用中使用它们,则会引发异常。这确实会在开发过程中产生一些问题,但编译器会显示正在使用哪些未实现的API。...此外,使用MVVM是通过反射绑定把控件绑定到viewmodel上,相比于编译后的代码,反射绑定本来就慢一些。

    1.1K20

    Succinctly 中文系列教程(三)20220109 更新

    客户端开发 五、服务器端开发 Succinctly Azure 函数教程 零、简介 一、基础 二、创建函数应用 三、元数据、BLOB 和计时器触发器 四、使用 HTTP 触发器 Succinctly...的一般结论 九、附录 Succinctly MongoDB3 教程 零、简介 一、MongoDB 概述 二、MongoDB 安装 三、MongoShell 四、操纵文件 五、数据检索 六、C# 基础...MongoDB 七、# 中的数据处理 八、在 C# 中插入数据 九、使用 C# 查找(查询)数据 十、C# 中的二进制数据(文件处理) 十一、备份和恢复 十二、最后的话 Succinctly MonoGame...九、存储桶管理 十、键值管理 十一、坚持 DHT 十二、异步实现的注意事项 十三、基本的 TCP 子网协议 十四、RPC 错误处理和延迟驱逐 十五、整合:演示 十六、未落实的事情 十七、总结 Succinctly...教程 零、简介 一、WPF 起源 二、WPF 内部 三、WPF 控件概览 四、WPF 应用 五、WPF 和 MVVM 六、WPF 命令 七、高级 WPF 概念 八、WPF 控件样式和模板 九、WPF

    18.4K20

    WPF内存优化

    内存泄露原因 内存泄露主要原因分析: 静态引用 未注销的事件绑定 非托管代码资源使用等 对于静态对象尽量小或者不用,非托管资源可通过手动Dispose来释放。...WPF 从 INotifyPropertyChanged 界面使用 DependencyProperties 类的内置通知。...运行一个包含的控件的属性是数据绑定到的 WPF 应用程序DependencyObject对象。 该对象的生存期是超过控件的生存期。...运行使用树视图控件或控件派生于的 WPF 应用程序,选择器类。 将控件注册为控制中的键盘焦点的内部通知在KeyboardNavigation类。 该应用程序创建这些控件的很多。...日志输出 对于调试信息的输出,我的做法是在窗体应用程序中附带一个控制台窗口,输出调试信息,给一个类,方便大家: using System; using System.Collections.Generic

    1.6K41

    DotNet 资源大全中文版(Awesome最新版)

    MVVM Light Toolkit - 该工具包的主要目的是加速在WPF,Silverlight,Windows Store(RT)和Windows Phone中创建和开发MVVM应用程序 Catel...- Catel是一个专注于MVVM(WPF,Silverlight,Windows Phone和WinRT)和MVC(ASP.NET MVC)的应用程序开发平台。...ReactiveUI - 集成了反向扩展(Rx)框架的.NET MVVM框架,使开发人员能够使用WPF,Windows Store Apps,WP8或Xamarin构建优雅,可测试的应用程序....Prism - 一个跨平台的桌面和移动MVVM开发框架。 WPF Application Framework (WAF) - 一个轻量级框架,可帮助您创建良好的结构化WPF应用程序。...FsPickler -一个用于.NET的快速多格式消息序列化程序 Migrant - 快速灵活的序列化框架可用于未装饰的类。

    16.4K82

    .Net Web开发技术栈

    Winform MVVM 在.Net中(主要应用于WPF、Silverlight、WP7) Prism - Brian Lagunas微软产品经理,微软MVP,一个跨平台的桌面和移动MVVM开发框架,开源...Catel - Catel是一个专注于MVVM(WPF,Silverlight,Windows Phone和WinRT)和MVC(ASP.NET MVC)的应用程序开发平台。...域名解析速度 掌握SEO 确保网站是可以被索引的: robots.txt,Robtots 标签 确保网页是可以被索引的:确保爬虫可以看到所有的内容、使用描述性的锚文本的网页 擅长标签编写:带有 H1 标签...、关键词放 URL 中、加粗文字、Descripiton 标签、图片文件名、ALT 属性带有关键词 ......欺骗 ClickJacking(点击劫持) 透明iframe HTTP头——X-Frame-Options 图片掩盖接口 暴力破解 DDOS 文件安全 配置文件、备份文件暴露读取、未授权修改、未授权上传

    4.9K30

    .NET周刊【7月第2期 2024-07-14】

    记一次 .NET某酒业业务系统 崩溃分析 https://www.cnblogs.com/huangxincheng/p/18291452 本文例子介绍了一位朋友的程序总是关闭时崩溃,通过使用WinDbg...WPF/C#:在WPF中如何实现依赖注入 https://www.cnblogs.com/mingupupu/p/18295546 本文通过WPF Gallery项目学习依赖注入的概念与在WPF中实现依赖注入的方法...触发事件使用触发方法,并订阅或取消订阅事件。...WTM的项目中EFCore如何适配人大金仓数据库 https://www.cnblogs.com/wdw984/p/18289632 WalkingTec.Mvvm框架于2013年开发,旨在提高开发效率和统一代码风格...代码示例展示了如何在XAML中使用该组件,并通过C#代码实现按钮的点击和长按事件。最终,通过抛出RoutedEvent实现长按事件的定义和触发。

    15810

    .NET周刊【6月第3期 2024-06-18】

    WPF/C#:程序关闭的三种模式 https://www.cnblogs.com/mingupupu/p/18243656 本文介绍了WPF应用程序的ShutdownMode枚举类型,包括OnLastWindowClose...、OnMainWindowClose和OnExplicitShutdown三种关闭方式,并通过示例代码展示了如何在MainWindow中实现这些关闭模式。...wpfui:一个开源免费具有现代化设计趋势的WPF控件库 https://www.cnblogs.com/mingupupu/p/18245521 wpfui是一个开源免费的WPF界面库,提供现代化设计体验...作者通过自己的使用经验详细介绍了该库的各个部分,包括Wpf.Ui.Demo.Console、Wpf.Ui.Demo.Mvvm、Wpf.Ui.Demo.Simple和Wpf.Ui.Gallery。...生成提交消息 生成拉取请求描述 解释提交历史 从 Visual Studio 创建带有链接工作项的拉取请求 (Azure DevOps) Visual Studio 2022 - 17.10 性能增强

    14110

    .NET周刊【2月第1期 2024-02-04】

    的开源框架,包括中台Admin(基于.NET 8.0)、DncZeus(基于.NET 7和Vue.js)、WalkingTec.Mvvm框架(基于.net core)、OpenAuth.Net(集成多种技术...应用模型,它在编译时创建依赖图并剪裁未使用代码,但对于反射和动态泛型实例化有限制。...文章提出了使用USB摄像头和改造的人脸识别程序来优化考勤系统,包括无人值守时自动关闭摄像头、记录考勤时间、同步人脸信息和取消传统的消息弹窗交互。...WPF性能优化:形状(Shape)、几何图形(Geometry)和图画(Drawing)的使用 https://www.cnblogs.com/czwy/p/18000108 本文讲述了WPF中绘图的核心概念...最后,通过XAML元素定义资源字典,方便在窗口中重用资源。

    20710
    领券