数据模板回顾 在WPF中数据模板可以控制数据的呈现方式。对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制 。但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。 一个简单的例子假设 我们定义了一个学生类1 public class Student 2 { 3 public int Id { get; set;
最近在做一个简单的Dicom查看器工具。项目地址:https://github.com/zhaotianff/ImageViewer.git遇到一个需要就是需要通过右键对图像进行缩放。 一开始我是通过处理MouseMove事件,然后再判断右键按下,再通过鼠标移动的方向及偏移进行缩放。例如,右键按住鼠标往左下角移动是放大,右上角移动是缩小。1 private void Border_Mou
什么是Ioc在软件工程中,控制反转(IoC)是一种设计原则,其中计算机程序的自定义编写部分从外部源(例如框架)接收控制流。术语“反转”是历史性的:与过程式编程相比,具有这种设计的软件架构“反转”了控制。在过程式编程中,程序的自定义代码调用可重用库来处理通用任务,但在控制反转的情况下,是外部源或框架调用自定义代码。在传统编程中,业务逻辑的流程是由静态绑定到彼此的对象决定的。 以赋值View
Snoop介绍Snoop 是一款开源的 WPF 监视工具,它能够监视或浏览任何正在运行的 WPF 应用程序的可视化、逻辑和自动化树(无需调试器),还可以更改属性值、查看触发器、在属性更改时设置断点等。项目地址:https://github.com/snoopwpf/snoopwpf 下载运行可以到github release下载已经编译的二进制文件。不同的snoop版本对应不同的.NET
ItemsPanel属性在WPF中,ListBox提供了一个ItemPanel属性,它可以指定用于控制元素呈现的模板。对于ListBox,默认使用的是VirtualizingStackPanel. 水平显示我们可以使用ItemsPanel属性来自定义元素显示所使用的面板,继续使用VirtualizingStackPanel,但是将方向控制为水平,并启用水平滚动条,禁用垂直滚动条。1 &l
最近遇到有客户需要打印PDF的需求,这里分享一下两种解决方案: 1、使用"谓词(verb)"当用户右键单击 Shell 对象(如文件)时,Shell 会显示 (上下文) 菜单的快捷方式。 此菜单包含一个命令列表,用户可以选择这些命令对项执行各种操作。 这些命令也称为快捷菜单项或谓词。 可以自定义快捷菜单。 当我们在创建进程时,Verb指定为print时,系统会到注册表寻找当前类
在WPF中嵌入其它程序,这里提供两种方案 一、使用WindowsFormHost使用步骤如下1、添加WindowsFormsIntegration和System.Windows.Forms引用 2、在界面上放置WindowsFormHost和System.Windows.Forms.Panel1 <Grid> 2 <WindowsF
记得早些年在深圳做设备的时候,公司测试使用了一款能自动测试WPF界面的工具,它能模拟点击,能记录步骤,也能获取输出。但具体名称忘记了。因为WPF界面元素是没有句柄的,所以无法对其它进行外部控制(非软件内部),所以早些年只能对Win32原生/MFC/Delphi/Winform的一些界面通过WinApi进行外部控制。也是最近在看代码时,看到了UIAutomation这个dll,就找资料来学习了一下。
这里以lepoco的wpf-ui为例nuget上的包基本是开源的,但是除非是离线环境,否则不建议将包源码直接放到工程里。下面的修改示例是针对直接使用nuget包的。 方法一、通过定义相同资源覆盖原始资源例如修改ListBox选中项的背景颜色首先我们在界面上添加一个ListBox,并添加几项1 <ListBox> 2 <ListBoxItem>222
在前面的文章中,我介绍过一种报告模板的实现思路。就是用的XAML本地加载。https://www.cnblogs.com/zhaotianff/p/18254574 在另外一篇文章中,介绍了XAML是如何被转换成对象的。https://www.cnblogs.com/zhaotianff/p/18363828 在这篇文章中,简单介绍了InitializeComponent函数,
在网上找了一下,发现这方面的资料并不多。做传统桌面的本来就不多了吧,更别说WPF了。我可能也要另寻出路了,不过我还是觉得做桌面挺有意思的。言归正传 首先,新建一个WPF自定义控件库项目 这里我们封装一个支持自己绘制形状的图片按钮,且支持图片和文字。运行效果如下:(形状是我随便绘的)将默认的CustomControl1.cs改成ImageButton.cs这个图片按钮的实现主要是
在WPF程序中,如果我们需要对程序进行调试,一般是使用断点/单步或输出日志之类的调试方法。如果我们需要实时查看程序输出,可以将程序的输出类型修改为控制台应用程序 这样我们在程序运行后,就可以得到一个控制台窗口。 然后再配合C#的预处理器指令,就可以实现实时调试 当配置为Debug时,我们使用Console.WriteLine进行实时调试信息输出当配置为Re
本文是一个MVVM模式开发的基础教程,完全手写实现,未借用三方框架,适用于初学者 要实现DataGrid的编辑,步骤如下:1、创建两个窗口,第一个窗口用于显示DataGrid,布局如下:这个界面上我们放置了一个DataGrid控件,并增加了三列,前面两列用于显示数据,最后一列用于编辑命令。MainWindow.xaml1 <Window x:Class="WPFDataGridEd
什么是数据验证(Validation)数据验证是指用于捕获非法数值并拒绝这些非法数值的逻辑。大多数采用用户输入的应用都需要有验证逻辑,以确保用户已输入预期信息。 验证检查可以基于类型、范围、格式或其他特定于应用的要求。 例如我有一个文本框,我限制该字段是必填项,当文本框内为空时,就会出现一个提示。虽然我们可以通过编码来实现限制,但最佳实现方式是使用WPF的数据验证功能。运行效
在前面的文章中,我们介绍了MVVM开发的一些基础知识。对于日常开发来说,基本已经足够应付大部分场景。从这里开始,介绍的都是在MVVM模式开发中,提升程序可维护性、灵活性、健壮性等方面的技巧。包括对话框、单元测试、数据验证、Ioc、数据访问及三方MVVM框架使用等。可以根据自身学习情况阅读。 Dialog在WPF中,我们经常会用到对话框,包括非模态(Show())和模态(ShowDialo
在以前的开发过程中,对于TabControl控件,我一般是习惯直接定义TabItem,在TabItem下布局,并进行绑定。类似这样1 <TabControl ItemsSource="{Binding TabList}" SelectedIndex="0"> 2 <TabItem Header="Tab1"> 3 <Grid>
在前面的文章中,介绍了ViewModel的基础概念本文会使用一些实例来进行ViewModel的演示一个基础的数据展示示例假设我们要在界面上对一本书籍的详细信息进行展示。 首先我们定义一下ViewMainWindow.xaml界面上我们定义了两列,左边一列用于展示书籍封面,右边一列用于展示详细信息1 <Window x:Class="_1_ViewModelStartup.MainW
WPF中的命令模型在WPF中,我们可以使用事件来响应鼠标和键盘动作。但使用事件会具备一定的局限性,例如:我想通过键盘快捷键触发事件、或者在某个时刻禁用事件。如果使用代码去编写这些控制逻辑,会变得非常枯燥。因此WPF提供了命令模型。命令具有多个用途。第一个用途是分隔语义和从执行命令的逻辑调用命令的对象。这可使多个不同的源调用同一命令逻辑,并且可针对不同目标自定义命令逻辑。例如,许多应用程序中均有的编
在前面的文章中,我们介绍了数据绑定,因为这部分内容是MVVM模式开发中ViewModel的基础。接下来我们将会围绕ViewModel展开更详细的介绍。 关注点分离(Separation of Concerns, SOC)在对MVVM模式进行介绍时,就提到过这个概念。它指的是确保代码有一个单一的、定义良好的功能目的,并且不承担任何多余的责任。这个概念是为了帮助我们理解 MVVM模
本文主要介绍WPF的数据绑定(Data Binding)功能,如果你已经熟悉本文的内容,可以跳过并直接阅读后面的文章。本文介绍的内容里都是在MVVM模式开发过程中必须要了解的内容,还有一些关于绑定的知识点,例如:指定源指定、多路绑定、绑定到元素、数据验证等,并没有完全覆盖到,可以自行查找资料学习。 什么是数据绑定我们先来看一下MSDN上的说明:数据绑定是在应用 UI 与其显示的数据之间建
说明:本文是介绍WPF中的依赖属性功能,如果对依赖属性已经有了解了,可以浏览后面的文章。 为什么要介绍依赖属性在WPF的数据绑定中,密不可分的就是依赖属性。而MVVM又是跟数据绑定紧密相连的,所以在学习MVVM之前,很有必要先学习一下依赖属性。 依赖属性(Depencency Property)是什么先来看看MSDN上的解释:WPF提供一组服务,这些服务可用于扩展类型的属性的功
前言还记得早些年刚工作的那会,公司的产品从Delphi转成了WPF(再早些年是mfc)。当时大家也是处于一个对WPF探索的阶段,所以有很多概念都不是非常清楚。但是大家都想堆技术,就提出使用MVVM,我那会是第一次听到MVVM,在网上看了一些资料后,也难以理解,后面也是硬着头皮在写。有意思的是其它年资高一点的同事,他们也不能很好的运行MVVM模式进行开发,写着写着,都变成了Code-Behind模式
在WPF中有多种方式可以实现多语言,这里提供几种常用的方式。 一、使用XML实现多语言切换使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类.使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定XML文档对象,XmlDataProvider.XPath属性指定绑定
控件分类在第一篇文章.Net Core和WPF介绍中的WPF的功能和特性部分根据功能性介绍了WPF的控件 名称。在接下来的文章中,将会详细的介绍各个控件的概念及使用。主要包括:内容控件:Label、Button、CheckBox、ToggleButton、RadioButton、ToolTip和ScrollViewer带有标题的内容控件:TabItem、GroupBox、Expander导航控件:
布局原则 1、不显式设置元素大小。2、不使用绝对定位。元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷,但扩展性比较差。一旦显示器尺寸或分辨率发生改变,界面的显示效果可能会达不到预期的效果。3、布局容器可以嵌套使用 常用布局容器 WPF中的布局控件继承自System.Windows.Controls.Panel抽象类。常用的布局容器如下:Grid网格
XAML介绍XAML(Extensible Application Markup Language)(发音:zammel)可扩展应用程序标记语言。XAML是为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它
SDK样式项目新建一个WPF工程,对比.Net Framework和.Net Core的项目文件在.Net Framework的csproj文件中,可以看到记录了很多信息。在.Net Core的csproj中,只看到很少的记录信息。默认的设置已经不再显示了,如输出路径,平台等。组件的引用已经默认包含在"Microsoft.NET.Sdk.WindowsDesktop"SDK中了。这种在项目文件中的
如何在Visual Studio 2019中创建.Net Core WPF工程打开Visual Studio 2019,选择Create a new project选择WPF App(.Net Core)输入项目名称和位置,单击Create 这样我们就创建好了一个WPF工程 工程文件说明Dependencies当前项目所使用的依赖库(包括引用的nuget包、系统框架
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号