大家好,又见面了,我是你们的朋友全栈君。 一、什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。...希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。...二、依赖属性的特点 1、属性变更通知 无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器...4 typeof(string), //属性类型 5 typeof(TestDependencyPropertyWindow), //该属性所有者,即将该属性注册到那个类上...1、在当前项目里面添加一个WPF版的用户控件,命名为“MyDependencyProperty”,在MyDependencyProperty.xaml.cs文件里面自定义一个依赖属性: 1 using
本文介绍如何在 WPF 使用 Clip 裁剪元素 在 WPF 的 UIElement 提供了 Clip 属性,这个属性默认是空,但是如果设置了这个属性就会对元素进行裁剪 这个属性是一个 Geometry...属性,设置的值表示裁剪之后剩下的部分,如写一个简单的类继承 UIElement 然后对他进行裁剪 class SisdecereYipuVayderyecallMawqere : UIElement...可以看到显示的是圆形 因为设置 Clip 属性是一个裁剪的窗口,只有在裁剪区域之内才可以显示 因为 Geometry 是可以做到不连续的,所以可以做出部分的透明,如裁剪两个矩形 public...WPF 通过 DrawingContext DrawImage 绘制图片 ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF-%
本文介绍如何在 WPF 使用 Clip 裁剪元素 在 WPF 的 UIElement 提供了 Clip 属性,这个属性默认是空,但是如果设置了这个属性就会对元素进行裁剪 这个属性是一个 Geometry...属性,设置的值表示裁剪之后剩下的部分,如写一个简单的类继承 UIElement 然后对他进行裁剪 class SisdecereYipuVayderyecallMawqere : UIElement...Clip = new EllipseGeometry(new Point(30, 30), 10, 10); } 可以看到显示的是圆形 因为设置 Clip 属性是一个裁剪的窗口...GeometryCombineMode.Union, null); Clip = geometry; } 上面代码使用 Geometry.Combine 合并两个图形 WPF
本文来告诉大家 WPF 的可获得焦点属性,如果希望一个元素可以获得键盘输入,那么就需要一个元素是可以获得焦点,而且焦点就在元素上。...WPF 的可获得焦点元素是 Focusable,这个属性是所有继承 IInputElement 的类都有,也就是所有的 UIElement 都可以设置 Focusable ,如果一个元素设置了 Focusable...默认的属性 如果反编译 WPF 可以看到默认的值是 false ,但不是所有的控件都是 false ,下面我来告诉大家哪些控件默认是 false ,哪些是 true,方便大家快速去查元素 ?
入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果: 说明 首先是定义表示属性的对象...的Register函数来创建实例 依赖项属性实例创建出来之后,不允许修改,所以上面例子中NameProperty是只读的 最后一部是使用传统的.NET属性来封装WPF依赖项属性 不应该在.NET属性包装的时候添加验证属性值的代码...、引发事件的代码 位于最顶端的元素,某一个属性设置了值,他的子元素也会继承这个属性的值 下面的例子中,我们设置Window元素的FontSize为30,这样Button的FontSize的属性值虽然没有设置...总结 WPF中的依赖项属性和winform的属性起到的作用是一样的,但实现的机制却有着较大的区别 最主要的区别是WPF中的依赖项属性的值是存储在一个全局的哈希字典中的 这样做的好处是: 节约内存...winform中的90%的控件属性都存在默认值,为每个属性存储一个字段将是对内存的巨大浪费,依赖项属性系统仅存储改变过的值,对于默认值来说仅仅存储一次 值继承 当访问一个依赖属性的值时。
本文来告诉大家 WPF 的可获得焦点属性,如果希望一个元素可以获得键盘输入,那么就需要一个元素是可以获得焦点,而且焦点就在元素上。...WPF 的可获得焦点元素是 Focusable,这个属性是所有继承 IInputElement 的类都有,也就是所有的 UIElement 都可以设置 Focusable ,如果一个元素设置了 Focusable...默认的属性 如果反编译 WPF 可以看到默认的值是 false ,但不是所有的控件都是 false ,下面我来告诉大家哪些控件默认是 false ,哪些是 true,方便大家快速去查元素 默认是 true
本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法 在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的 对依赖属性添加通知回调...,可以使用如下方式 DependencyPropertyDescriptor.FromProperty(要监听的依赖属性, typeof(对象的类型)).AddValueChanged...(sender, args) => { // 在这里加上断点 }); 添加断点之后,属性的变更有两个可能...进入断点,可以通过 VisualStudio 的 调用堆栈 找到变更此依赖属性的方法,从而定位到是哪个模块变更了依赖属性 如果是不进入断点,可能是对象被换掉,试试在对应的属性上的 set 方法加上断点,...或者在局部变量里面添加 Id 值,调试此变量的属性在哪被变更 一个用来调试的版本的代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd
有时候我们在WPF程序中设置了图片的Width和Height,但图片显示出来的宽和高并不是我们预期的效果,这实际上是由于Image的默认Stretch属性导致的 Image的Stretch属性默认为Uniform...,这代表图片会均匀的变大和缩小,保证了图片的比例不失调,而往往我们设置的宽和高并不符合图片的比例,因此显示效果就 不是我们预期所想,Image的Stretch属性还可以设置为以下值: None —— 图片会按原始大小显示...图片会按照设置的Width和Height显示,但图片是均匀变大和缩小的,比例不失调,超出显示范围的图像会被截掉 但是如果将image放到StackPanel,会发现iamge的stretch的fill属性失效...原因如下: 在WPF中,StackPanel是十分常用的布局元素。
我参考了WPF和Android的MVVM设计,所以在使用上以及类和接口的命名上与他们也都非常类似,我在项目中提供了大量的示例,很容易上手,对于熟悉MVVM的朋友入门门槛会更低。...在WPF中是使用XAML来配置UI的,所以数据绑定也在XAML中配置,在Unity3D中,因为考虑到性能问题以及与Unity3D中UGUI的耦合问题,我没有采用这种XML的配置方式,而是使用脚本绑定的方式...support(数据绑定支持): Field binding(Field的绑定,只支持OneTime模式,因为无法支持修改通知); Property binding(属性绑定,支持TwoWay双向绑定...Event binding(事件绑定); Unity3d's EventBase binding(Unity3d的事件绑定); Static property and field binding(静态类的属性和...方法绑定); Command binding(命令绑定); ObservableProperty,ObservableDictionary and ObservableList binding(可观察属性
那么问题就来了: 怎么用WPF做一个DX的编辑工具? 最早看到过的方式是WPF提供的D3DImage类. 这个类的作用就是把BackBuffer拷贝过来, 然后再用WPF那一套东西来显示....WPF推出时, 也考虑到了向后兼容. 在WPF中显示Win32控件, 可以使用HwndHost, 而对于WinForms, 可以使用WindowsFormsHost....最完美的方式就是找到WPF的主循环, 问题是WPF有这东西么? 有待研究. WPF的优势是什么? 控件多样性不如WinForms, 与C++的交互便利性不如MFC, 为什么还要使用它呢?...目前来说, 最吸引人的地方就是DataBinding....通过DataBinding, 可以直接把控件的某一个属性与对象的属性进行绑定, 不用写一堆的OnButtonClicked之类的事件响应函数, 也不用写一堆界面初始化函数.
前言 我在学习WPF的早期,对依赖属性理解一直都非常的不到位,其恶果就是,我每次在写依赖属性的时候,需要翻过去的代码来复制黏贴。...相信很多朋友有着和我相同的经历,所以这篇文章希望能帮助到那些刚刚开始学依赖属性的朋友。...那些[讨厌]的依赖属性的讲解文章 初学者肯定会面临一件事,就是百度,谷歌,或者MSDN来查看依赖属性的定义和使用,而这些文章虽然都写的很好,但,那是相对于已经学会使用依赖属性的朋友而言。...然后将我们之前定义好的依赖属性绑定到对应的值上。...结语 WPF拥有非常强大的自定义能力,而,正确的学会了依赖属性是体会到它强大的第一步。
在写 WPF 程序的时候会遇到依赖属性绑定了,但是值没有更新或者没有绑定上的问题,本文告诉大家可以如何调试 依赖属性不对应 在写依赖属性的时候,默认使用快捷键创建,但是如果是自己写的,需要注意引用的类以及属性名字符串是否对应...new PropertyMetadata(default(string))); 如果我此时将 Name 写为其他字符串,例如下面代码写为 NameProperty 字符串,那么通过以下的绑定也是没有绑定到依赖属性...}; BindingOperations.SetBinding(Foo, Foo.NameProperty, binding); 但是反过来写就没有注意到绑定的名字...例如我没有设置一个元素的上下文然后进行绑定,如下面代码 我期望的绑定到...这个方法会用在列表里面的元素和用户控件绑定不上,因为在列表和用户控件里面的上下文可能不是上层元素的上下文而是被指定的,请看WPF Frame 的 DataContext 不能被 Page 继承 没有通知
:'xxx', desc:'', content:'', } } }, //分享到朋友或群...title:'分享失败', icon:'none' }) } } }, //分享到朋友圈
#dataBinding 属性原型 二、DataBindingOptions 配置 1、DataBindingOptions#addDefaultAdapters 属性 2、DataBindingOptions...#enabled 属性 3、DataBindingOptions#enabledForTests 属性 4、DataBindingOptions#version 属性 Android Plugin DSL...数据绑定选项 , 主要是设置 BaseExtension 中的 DataBindingOptions dataBinding 属性 ; dataBinding { } Configures data...Delegates to: DataBindingOptions from dataBinding 3、BaseExtension#dataBinding 属性原型 BaseExtension#dataBinding...属性配置原型 : 该属性是 数据绑定选项 , BaseExtension#dataBinding 属性是 DataBindingOptions 类型的 ; DataBindingOptions dataBinding
依赖属性的概念大家应该都很清楚,那么什么是只读依赖属性呢? ---- 为何要用只读依赖属性 当某些时候,你的依赖属性只是为了表征一种多因素影响的复合状态。这种状态不适合由外部显示设置。...比如常见的IsMouseOver,当且仅当这个属性由鼠标输入设备进行内部赋值时,结果才是有效的。而在于外部进行赋值时,其值和相应的真实设备状态是不一致的。...只读依赖属性的局限 由于不可设置,只读依赖属性会被限制众多解决方案,如数据绑定,验证,动画,继承等等。...只读依赖属性的用法 由于仍可以在属性发生改变时引发通知,只读依赖属性可以用作于样式的属性触发器,或者用于触发注册的PropertyChangedCallback事件。...- Stack Overflow ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/WPF%E7%9A%84%E5%8F%AA%E8%AF%BB%
基本上 Xamarin 和 WPF 的技术是相同的,但是有一些小细节和属性不同,本文记录一些不同的点,方便小伙伴将 WPF 项目迁移为 Xamarin 项目 需要注意的是 Xamarin 原生支持作为...WPF 控件运行,支持在 WPF 运行,反过来不可以 也就是用 Xamarin.Forms 写的应用能作为 UWP 和 WPF 应用运行,也可以作为 Android 和 IOS 运行,也可以使用 GTK...本文只是告诉大家如何从一个已有的 WPF 项目迁移到 Xamarin 上 控件 通用控件的属性需要修改 Visibility-IsVisible Panel 通用的容器属性需要修改 HorizontalAlignment-HorizontalOptions...VerticalAlignment-VerticalOptions MinWidth-MinimumWidthRequest StackPanel 在 WPF 的 StackPanel 需要换 StackLayout...布局 TextBlock 用 Label 替换 TextBox 用 Editor 替换 Button 如果是文本按钮将 Content 替换为 Text 属性 将 Click 事件替换为 Clicked
在 WPF 中,形状可以使用 StrokeThickness 定义边框的粗细,而边框和形状元素的大小的关系受到这个属性的影响。...我比较推荐 WPF 的这个设计,固定了矩形的宽度和高度,那么边框的大小是向内的。...因为这样设计起来比较好计算 而 SVG 的行为和 WPF 的不相同,在 SVG 里面是使用矩形的边框作为中心,向两边填充。...设计器上的蓝色的圆形是形状的 RenderedGeometry 属性,这个属性是一个 Geometry 类型 使用 Geometry 类型进行绘制的时候,设置的 Pen 里面的 Thickness 的绘制方式使用的是从...Geometry 线条的中间向两边填充 ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/WPF-%E5%BD%A2%E7%8A%B6%
OxyPlot.WPF 公共属性一览 目录 OxyPlot.WPF 公共属性一览 一、PlotModel 1、构造函数中设置的属性 2、其它属性 3、只读属性 二、Axis 1、构造函数中设置的属性 2...、其它属性 3、只读属性 三、Series 四、LegendBase 五、Annotation 独立观察员 2021 年 6 月 13 日 注意:本文仅供需要时参阅,无休闲阅读属性,前方高能(枯燥),非战斗人员请速速撤离...注释已提交到码云:https://gitee.com/DLGCY_Clone/oxyplot/tree/dlgcy 另外,之前《OxyPlot.Wpf 图表控件使用备忘》一文的例子程序有了后续,用 OxyPlot...OxyColors.Violet }; this.AxisTierDistance = 4.0; // 坐标轴刻度距离 } 2、其它属性...Subtitle // 子标题 Title // 标题 TitleHorizontalAlignment // 标题和子标题的水平对齐方式 3、只读属性
WPF 中如何创建忽略 DPI 属性的图片 2020-01-08 04:57 WPF 框架设计为与 DPI 无关,但你依然可能遇到 DPI...我们还可能可以尝试这些方法: 创建 BitmapImage 对象,根据当前屏幕的 DPI 值计算 DecodePixelWidth 和 DecodePixelHeight; 创建 DrawingImage 对象,直接按照 WPF...DrawingImage DrawingImage 可以使用 WPF 的方式来绘制,不过如果要绘制位图,也需要一个 BitmapImage 对象,不过这个时候我们可以按照我们需要的尺寸进行绘制而不用关心...DrawingImage(image); return drawing; } 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/create-wpf-image-source-ignoring-dpi.html
(一)类的私有属性 __private_attr:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。 比如:self...._className__attrName 访问属性,将如下代码替换以上代码的最后一行代码: print counter.