WPFControl
- 格式:ppt
- 大小:678.50 KB
- 文档页数:18


WPF使⽤Winform⾃定义控件
在WPF的⽤户控件中使⽤Winfrom⾃定义控件的过程:
1、添加引⽤
WindowsFormsIntegration.dll
System.Windows.Forms.dll
2、在要使⽤WinForm控件的WPF窗体的XAML⽂件中添加如下内容:
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"如下图所⽰:
3、 在WPF的容器控件内如StackPanel内⾸先要添加WinForm控件的宿主容器,⽤于衔接WPF和WinForm,
对应XAML如下:
说明:即为WinForm控件的宿主容器,每⼀个宿主容器只能放⼀个WinForm控件,如下例,放了三个WinForm控件,分别放在三个宿主容器⾥⾯,该容器可以设置属性来调整⼤⼩和布局
注意:如上我添加的WinForm控件如在指定其Name时,必须加前缀x:,如添加Lable时这个为Winform⾃定义控件。
4、 如果要在WPF后台代码中访问上⾯的Lable,可直接像在WinForm中使⽤⼀样。
ok,今天的分享就到这⾥了,有疑问欢迎指导。
wpf知识点
以下是WPF(Windows Presentation Foundation)的一些主要知识点:
1. XAML(Extensible Application Markup Language):WPF
使用 XAML 作为界面描述语言,通过 XAML 可以清晰地分离界面布局和逻辑代码。
2. 控件:WPF 提供了许多强大的内置控件,如按钮、文本框、列表框、网格等,并且支持自定义控件的创建。
3. 布局管理器:WPF 提供了多种布局管理器,如 StackPanel、Grid、Canvas 等,可以灵活地控制控件的排列和空间分配。
4. 数据绑定:WPF 支持通过数据绑定将界面元素与数据模型进行关联,实现数据在界面上的自动更新和同步。
5. 样式和模板:WPF 允许通过样式和模板来定制控件的外观和行为,可以轻松实现统一的界面风格和可重用的控件布局。
6. 命令和命令绑定:WPF 引入了命令的概念,可以将用户的操作抽象成独立的命令对象,并通过命令绑定将命令与界面元素关联起来。
7. 动画和转换:WPF 提供了丰富的动画和转换功能,可以通过简单的代码实现复杂的动画效果,如渐变、旋转、缩放等。
8. 2D 和 3D 图形:WPF 支持绘制和渲染2D 和 3D 图形,可以创建各种图形效果和交互式图形应用程序。
9. 事件和路由事件:WPF 提供了事件和路由事件机制,可以实现控件之间的高效通信和交互。
10. 媒体和图像处理:WPF 具有强大的媒体和图像处理功能,可以播放音频和视频文件,以及对图像进行处理和展示。
这只是 WPF 的一部分知识点,WPF 是一个功能强大且复杂的框架,有很多更深入的主题和技术需要学习和掌握。
WPF集合控件实现分隔符(ItemsControlSeparator)
在WPF的集合控件中常常需要在每⼀个集合项之间插⼊⼀个分隔符样式,但是WPF的ItemsControl没有相关功能的直接实现,所以只能考虑
曲线救国,经过研究,⼤概想到了以下两种实现⽅式。
先写出ItemsControl的数据模板,如下:
BorderThickness="1"
BorderBrush="Blue"
VerticalAlignment="Stretch">
/>
/>
Grid.Row="0"
Height="1"
Background="Red"
/>
Text="{Binding}"
/>
其中名为Bd的Border就是分隔符,此时每⼀项的头部都可以看见分隔符,现在我们的⽬标是要隐藏掉第⼀项的分隔符,这就达到了项与项之
间才有分隔符的⽬的。
第⼀种实现⽅式最简单,使⽤集合项前向绑定PreviousData,这是四种绑定⽅式中的⼀种,估计也是平时⽤得最少的⼀种,不过此时就派上
⽤场了,代码如下:
1
2
3
4
5
6
Value="{x:Null}">
Property="Visibility"
Value="Collapsed"
/>
当某⼀项的前项为空时就隐藏分隔符,简单的⼀⾏代码搞定。不过这种实现⽅式有个缺点就是如果使⽤的是Insert⽅式向绑定的数据源的最
前⾯添加数据则就会出现不⽌⼀个没有分隔符的项,如果是往队尾或者队中添加则不会出现这个问题。
第⼆种实现⽅式是借助ItemsControl的AlternationCount和AlternationIndex属性来为集合项标记索引号,再隐藏索引号为0的项的分隔符,代
码如下:
复制代码代码如下:
VerticalAlignment="Stretch" AlternationCount="{Binding Source.Count}">
⾸先在ItemsControl上绑定AlternationCount到数据源的Count属性上,然后此时ItemsControl的AlternationIndex属性就变成的该集合数据源
WPF利⽤动画实现圆形进度条
这是我的第⼀篇随笔,最近因为⼯作需要,开始学习WPF相关技术,⾃⼰想实现以下圆形进度条的效果,逛了园⼦发现基本都是很久以前的⽂章,实现⽅式⼀般都是GDI实
现的,想到WPF中动画效果不错,于是⾃⼰研究了⼀下,还真让我做出来了,废话不多说了,先上效果。
这个效果是不是还不错?这⾥⾯实现了数字实时显⽰以及根据进度进⾏⾃动渐变的效果。实现原理其实很简单,利⽤WPF动画,其中主要元素有border(实现⾥外层圆的效
果),Arc扇⾯(就是⽤来实现外层填充效果的),Label(⽤来显⽰进度百分⽐)。
1.实现⾥外双层圆背景效果
这⾥我⽤了两个border实现,将两个border的CornerRadius设置为500,这样保证他们是两个圆(这⾥不⽤Ellipse是我觉得border可能更加省资源),然后将他们他们的宽度
设置为100和80,让他们作为同⼼圆。其他设置主要为了美观此处不再多说,⼀会上代码即可。
2.利⽤Arc实现填充效果
说起这个Arc还真是个好东西,之前只是知道它是个扇⾯,但是没想到还可以实现弧度填充,这得益于它的ArcThickness可以设置为⼩数,这个具体数值可以在blend中⾃⼰
调节⼀下,ArcThicknessUnit设置为Percent,意思是单位是百分⽐。然后利⽤Arc的StartAngle和EndAngle就可以轻松实现进度填充了。
3.利⽤Label实现进度显⽰
最后在中间放置⼀个Label,然后将它的Text属性绑定到Arc的EndAngle上,之后⾃⼰写个Convert将⾓度转化为百分⽐即可。
4.动画的实现
剩下的就可以利⽤blend做个动画,动画效果⼗分简单,开始时间,结束时间,开始⾓度,结束⾓度。这样简单的填充效果就实现了,最后还要实现渐变效果,好吧,其实也
⽐较简单,同样的开始时间,结束时间,开始颜⾊,结束颜⾊,然后两个动画的时间间隔相同就好,这样效果⽐较同步。