WPF基础入门Class7-MVVN框架使用框架可以省掉如Class6中的ViewModelBase.cs的OnPropertyChanged,亦方便命令传参1、NuGet安装CommunityToolkit.Mvvm(原Mircrosoft.Toolkit.Mvvm)也可以安装MVVMLight等其他集成库2、显示页面:Grid>StackPanel>TextBoxx:Name="input"Text="{BindingName}">TextBox>TextBoxText="{BindingTitle}">TextBox>ButtonCommand="{BindingShowCommand}
在项目中经常会遇到类似如下要求的需求,创建允许自由拖动的控件,这样的需求可以使用WPF的装饰器Adorner来实现。 一、什么是装饰器?装饰器是一种特殊类型的FrameworkElement,装饰器始终呈现在被装饰元素的顶部,用于向用户提供可视化提示。装饰器可以在不改变原有控件结构的基础上,将功能点增加到元素中或元素上提供视觉效果等,如WPF的光标效果,焦点效果等都是通过装饰器来实现的。装饰器是一个始终位于装饰元素或装饰元素集合顶部的呈现图层,其呈现独立与它所绑定的UIElement,WPF中的装饰器是在一个单独的曾AnornerLayer上进行绘制的,该层位于普通控件元素之上,而且允许多
Trigger:当某些条件满足时会触发一个行为。一、触发器的类型数据变化触发型:Trigger/DataTrigger多条件触发型:MultiTrigger/MultiDataTrigger事件触发型:EventTrigger二、TriggerTrigger:Property用来指明关注目标控件的哪个属性,Value则是触发条件。Setter:一旦触发条件被满足,这组Setter的“属性-值”就会被应用,触发条件不再满足后,各属性值会被还原。StyleTargetType="CheckBox">Style.Triggers>TriggerProperty="IsChecked"Value="t
感谢大家对上篇博文的支持💕回到正题,今天和大家分享下学习动画过程中的内容。动画对我来讲还是蛮新鲜的,大家知道在接触WPF之前我只用过Winform,而Winform中并没有动画的概念,当想要实现某些“动画”效果时,我们必须从头构建自己的动画系统,正如微软文档中对动画的介绍,在Winform中做动画我们一般会结合计时器和一些绘图逻辑来实现我们想要的“动画”。比如,我想让一个矩形逐渐从视野中消失,大概率会按照以下步骤来完成这项工作:创建一个计时器设定适当的Interval让计时器检查经历了多长时间在每次进入计时器时,根据时间计算矩形的透明度然后更新这个矩形虽然这种方案看上去不难,但是将它应用到窗体
文章目录前言ToolkitNuget安装简单使用SetProperty,通知更新RealyCommandCanExecute新功能,代码生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能对应关系NotifyPropertyChangedFor前言CommunityToolkit.Mvvm(以下简称Toolkit)是WPF最有名的两个框架,一个是Prism,另一个就是Toolkit。Prism可以看我的Prism详解WPFPrims框架详解ToolkitToolkit官方文档用CommunityToolkit.Mvvm加
文章目录前言一、WPF数据绑定的概要1.数据绑定涉及到两个方面:2.对于绑定源,在WPF可以是以下四种:二、绑定的模式1.根据数据流的方向,WPF中的数据绑定分为以下四种:三.绑定目标值影响绑定源值条件1.UpdateSourceTrigger属性是确定触发源更新的原因。2.示例四、数据提供程序1.XmlDataProvider:2.ObjectDataProvider:五、类型转换与数据校验1.IValueConverter接口2.ValidationRule类六、绑定集合对象1.ICollectionView接口2.ObservableCollection类3.WPFMVVM概要前言一、W
背景业务开发过程中遇到一个日期范围选择的需求,和ElementUI的DateTimePicker组件比较类似,由两个日历控件组成,联动选择起始时间和结束时间。问题WPF中提供了一个DatePicker的控件,主要由DatePickerTextBox、Button和一个Calendar组成,其中Calendar是后台代码动态添加的,因此不能直接通过自定义DatePicker的控件模板实现需求。这里通过实现自定义DateTimePicker控件来满足需求。技术要点与实现由于Calendar结构比较复杂,本文通过控件组合的方式简单实现自定义DateTimePicker。先来看下实现效果。首先创建一个
前言总目录在上一章中,初步的认识了WPF,那么这一章将逐个的认识一些常用的控件以及这些控件的常用属性,这对于我们我们后续开发WPF程序是非常有必要的。一、Window窗体1、Window基本用法(1)Winodw窗体派生自ContentControl,有一个Content属性,里面可以放一个任意控件,因此Window下只可放一个子元素(2)Window常用属性:Icon设置窗体的图标,ShowInTaskbar是否在任务栏项目窗体图标,WindowState窗口显示方式等等还有很多,可以自行设置看看。2、去除原生边框,设置自定义背景和圆角的窗体日常开发中:最常用的是,去掉原生的Window边框
背景应用开发过程中,常常会对用户输入内容进行验证,通常是基于类型、范围、格式或者特定的要求进行验证,以确保输入符合预期。例如邮箱输入框校验输入内容是否符合邮箱格式。在WPF中,数据模型允许将ValidationRules与Binding对象关联,可以通过继承ValidationRule类并重写Validate方法来创建自定义规则。问题尽管创建自定义校验规则可以满足大部分应用场景,但是当我们校验规则是动态变化的时候就有些麻烦了。例如,开发一个文件管理系统,要求文件名不能与系统中已有的文件重名。这个时候需要先获取到系统中已有文件的名称列表,并绑定到ValidationRule上。然而Validat
引言今天在做一个设置文件夹路径的功能,就是一个文本框,加个按钮,点击按钮,弹出FolderBrowserDialog再选择文件夹路径,简单做法,可以直接StackPanel横向放置一个TextBox和一个ImageButton,然后点击按钮在后台代码中给ViewModel的FilePath赋值。但是这样属实不够优雅,UI不够优雅,代码实现也可谓是强耦合,那接下来我分享一下我的实现方案。目标做这个设置文件夹路径的功能,我的目标是点击任何地方都可以打开FolderBrowserDialog,那就需要把文本框,按钮作为一个整体控件,且选择完文件夹路径后就给绑定的ViewModel的FilePath赋