WPF教程
文章平均质量分 73
记录WPF学习过程,是从零基础开始学习,包括浅显易懂的代码和解释,也会记录项目中遇到的各种问题及其解决办法。我每都会学一点,也会跟着更新。
小菜的成长之路
主业享受生活,副业编码的摆烂女大学生一枚。非CS专业,但是感兴趣! Let's code!
展开
-
wpf进阶教程(三):创建更为复杂的控件模板,修改ListBox和ScrollBar的控件模板来改变样式
下面这个窗体包含一个ListBox,使用资源字典引用一个我们自定义的控件改变它的样式,这个模板需要满足控件实现代码的所有需要:项目源码<ListBox.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Listbox.xaml"/> </R原创 2021-12-10 19:52:33 · 670 阅读 · 0 评论 -
wpf进阶教程(二):组织模板资源,创建和使用资源字典
当我们需要在多个窗体,甚至整个应用程序中使用模板,但是又不想重复定义时,就可以定义以下模板资源,实现模板共享,一般在资源字典中定义资源。项目源码资源字典控件模板创建资源字典:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&g原创 2021-12-08 19:35:55 · 488 阅读 · 0 评论 -
wpf进阶教程(一):创建控件模板ControlTemplate
控件模板可对控件的内容和样式均做出改变。项目源码防止两个按钮,第一个为普通按钮,第二个应用了控件模板:<Window.Resources> <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> <Border BorderBrush="Orange" BorderThickness="3" CornerRadius="2" Background="Red" Tex原创 2021-12-02 21:17:06 · 1586 阅读 · 0 评论 -
WPF系列教程(二十九):触发器Triggers、MultiTrggers、EventTrigger——属性触发器、多触发器、事件触发器
使用触发器可以自动完成简单的样式改变。项目源码触发器在Style定义时使用Style.Triggers属性来实现:<!--设置触发器--><Style.Triggers> <Trigger Property="Control.IsFocused" Value="True"> <!--获取焦点的时候,点击按钮--> <Setter Property="Control.Foreground" Value="Dark原创 2021-12-01 09:48:16 · 4827 阅读 · 0 评论 -
WPF系列教程(二十八):样式基础,Style样式的定义和使用,关联事件处理Style,多层样式的处理,自动应用样式
资源的定义与使用在窗体中定义静态资源:<Window.Resources> <FontFamily x:Key="ButtonFontFamily"> Times New Roman </FontFamily> <sys:Double x:Key="ButtonFontSize"> 18 </sys:Double> <FontWeight x:Key="ButtonF原创 2021-11-30 23:33:05 · 3593 阅读 · 0 评论 -
WPF系列教程(二十七):资源字典Resource和ResourceDictionary,用资源字典添加图像画刷
在多个项目之间共享资源,可创建资源字典,一个资源字典就是一个用于存储资源的xaml文件。创建资源字典右键项目,添加资源字典。在资源字典中添加两个图像画刷的资源:<ImageBrush x:Key="TileBrush1" TileMode="Tile" Viewport="0 0 32 22" ViewportUnits="Absolute" ImageSource="/true.jpg" Opacity="0.3"> <!--ViewPort表示从0,0位置开始,大小32原创 2021-11-30 15:21:36 · 759 阅读 · 0 评论 -
WPF系列教程(二十六):资源基础Resource的定义及使用,动态资源、静态资源、系统资源
wpf资源是为了存储一系列我们常复用的对象。每个元素都有Resource属性。项目源码资源的定义与使用下面的例子使用一张笑脸图片定义一个画刷,定义成静态资源并在按钮背景属性上使用(使用元素属性定义):<Window.Resources> <ImageBrush x:Key="TileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" ImageSource="/true.jpg">原创 2021-11-30 14:06:41 · 3826 阅读 · 0 评论 -
WPF系列教程(二十五):绑定到非元素对象Source属性、RelativeSource属性、DataContext属性
项目源码数据绑定Binding Source属性把TextBlock的Text属性绑定到静态的SystemFonts.IconFontFamily:<TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"/>或者在窗体中定义源:用元素属性定义了两个资源<Window.Resources> <FontFamily x:Key="CustomFont原创 2021-11-29 21:36:17 · 1214 阅读 · 0 评论 -
WPF系列教程(二十四):将元素绑定到一起,数据绑定,属性之间的Binding
项目源码数据绑定在窗体中放置了一个Slider控件和一个TextBlock控件:<StackPanel Margin="5" Name="stackPannel"> <Slider Name="slider1" TickPlacement="Both" Minimum="1" Maximum="40" TickFrequency="1" Margin="3" Value="10" /> <TextBlock Text="This is a test tex原创 2021-11-29 16:45:12 · 1278 阅读 · 0 评论 -
WPF系列教程(二十三):程序集资源,将图片设为资源文件或内容文件
项目源码资源文件在主窗体中添加图片,并设置Source属性的图片路径。修改图片属性为资源文件(resource):编译过后,该图片已经转化为二进制的资源嵌入到我们的exe文件中了,从而不需要源jpg文件了,即使把jpg删掉也可以正常显示。要更换资源也是非常方便的,只需更换Image控件的Source即可:在启动调试后就会重新进行编译,嵌入不同的资源文件,将该资源文件置入了编译后的程序集中。内容文件内容文件不能像资源文件一样嵌入到程序集中,例如声音文件就不能作为资源文件,可以作为内容文件原创 2021-11-29 15:42:42 · 3115 阅读 · 1 评论 -
WPF系列教程(二十一):Application类的任务
项目源码显示初始界面例如我们在打开一个应用程序的初始阶段,打开第一个窗口之前,一般会显示该程序的某个图标页面,显得比较专业。在项目中右键添加现有项,把一张图片添加进来:设置图片属性-生成操作为开始界面:这样在窗体出现之前会显示该图片,大约300ms。处理命令行参数以下例子为加载一个文档:在项目中添加一个txt文档。属性-复制到输出目录-始终复制点击项目-属性-调试,填入文档的名称。删除APP.xaml文件中的StartupUri="MainWindow.xaml",添加事件原创 2021-11-29 14:55:09 · 284 阅读 · 0 评论 -
WPF系列教程(二十):Application类的创建与应用
应用程序的启动Application类中是整个项目,创建一个单线程的主程序:namespace ApplicationClass{ class StartUp { [STAThread()] // 定义单线程 static void Main() // 主程序 { Application app = new Application(); // 创建一个程序 MainWindow wind原创 2021-11-29 11:26:09 · 938 阅读 · 0 评论 -
WPF系列教程(十九):日期控件——Calendar、DatePicker日历控件
项目源码Calendar控件DisplayMode="Month"属性:显示日历时最高的一级,以十年、年、月来显示,一般用Month。DisplayDateStart="2021-5-1" DisplayDateEnd="2021-11-29"属性:日历的开始和结束日期。FirstDayOfWeek="Monday"属性用于将某一天作为日历第一列的第一天。当选择的日期发生改变时,可以用触发事件SelectedDatesChanged="cal1_SelectedDatesChanged"的响应函数原创 2021-11-29 10:40:13 · 6179 阅读 · 0 评论 -
WPF系列教程(十八):范围控件——Slider、ProgressBar滑块、进度条
范围控件继承与范围基类RangeBase类。项目源码Slider控件不需要非常准确数值控制范围大小时,使用Slider控件。Slider控件的属性如下:方向属性Orientation="Horizontal"用于设置滑动条水平或垂直放置设置最大值和最小值的属性Maximum="100" Minimum="10",最小值属性默认是0设置每格大小的属性Value="10",设置刻度条显示TickPlacement="BottomRight"刻度及设置刻度位置属性TickFrequency="5"设原创 2021-11-29 09:44:26 · 1869 阅读 · 0 评论 -
WPF系列教程(十七):列表控件——ListBox、ComboBox
ListBox控件ListBox控件继承自ContentControl类,是一个容器类的控件,向ListBox控件中包含ListBoxItem元素向容器中添加成分,也可以添加其他任意的控件。<ListBox x:Name="listBox" Margin="5" Height="auto" VerticalAlignment="Top"> <ListBoxItem> <Image Source="C:\王祺\学校\CSharp学习\Code\d590c原创 2021-11-28 11:41:40 · 3593 阅读 · 0 评论 -
WPF系列教程(十六):文本控件——TextBox、RichTextBox、PasswordBox
TextBox控件TextBox用于存储单行文本。当文本较长时,可以设置TextBox的TextWrapping="Wrap"属性,可以使文本框自动换行。当垂直方向行数不够时,会自动设置滚动条,也可设置VerticalScrollBarVisibility="Visible"使得滚动条可见。...原创 2021-11-26 14:16:03 · 2272 阅读 · 0 评论 -
WPF系列教程(十五):带标题的内容控件——GroupBox、TableItem、Expander
GroupBoxGroupBox的标题属性:Header=“GroupBox”在GroupBox中可以放置其他布局容器,例如StackPannel。<GroupBox x:Name="groupBox" Header="GroupBox"> <StackPanel> <RadioButton Content="1" Margin="10"/> <RadioButton Content="2" Margin="10"/&原创 2021-11-25 20:35:00 · 2348 阅读 · 0 评论 -
WPF系列教程(十四):特殊容器控件ScrollViewer
ScrollViewer是一个可以滚动的控件。它使得大量内容在有限容器内显示成为可能。在窗体中添加ScrollViewer控件,在ScrollViewer中添加一个文本框TextBox,将Text属性设置为较长的字符串。(可以用word的语句自动生成功能,在word中输入函数=rand(1,2)即可)利用滚动条的效果:ScrollViewer有一个滚动条设置的属性,在垂直方向有VerticalScrollBarVisibility=“Hidden”有四种取值,分别是:Visible:显示滚动条原创 2021-11-24 23:53:01 · 6866 阅读 · 0 评论 -
WPF系列教程(十三):内容控件 XAML快捷键,按钮属性,CheckBox,RadioBox,ToolTip
本节主要介绍内容控件的Content属性。控件Content属性的设置可以直接在控件中设置Content属性<Button x:Name="button" Content="Button" Height="49"/>也可以用图片。<Button> <Image Source="/edbcb5485f9ac954.jpg" Width="100" Height="30"> </Image></Button>设置Con原创 2021-11-23 23:30:57 · 2114 阅读 · 0 评论 -
WPF系列教程(十一):鼠标操作
鼠标操作的四个事件:MouseEnter:鼠标移动到元素时触发事件MouseLeave:鼠标离开元素时触发事件PreviewMouseMove:隧道路由事件,鼠标移动时触发MouseEventArgs事件MouseMove:冒泡路由事件,鼠标移动时触发MouseEventArgs事件一个对象:MouseEventArgs:触发事件举例,在WPF项目中,捕获鼠标的位置。当鼠标在上方蓝色矩形中移动时,在最下方TextBlock中显示鼠标位置。...原创 2021-11-23 14:21:49 · 6340 阅读 · 0 评论 -
WPF系列教程(十二):控件类——前景背景、字体Background、Foreground、FontFamily、FontSize
控件都包含背景画刷和前景画刷属性。部分控件包含字体属性。鼠标光标的设置。示例项目源码为控件设置背景与前景下面这个窗体<Window x:Class="Control.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:原创 2021-11-23 16:47:14 · 2765 阅读 · 0 评论