首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FluentValidationC# WPF应用

其实它也可以用于WPF属性验证,本文主要也是讲解该组件WPF使用,FluentValidation官网是: https://fluentvalidation.net/ 。...本文需要实现功能unsetunset 提供WPF界面输入验证,采用MVVM方式,需要以下功能: 能验证ViewModel定义基本数据类型属性:int\string等; 能验证ViewModel定义复杂属性...集合类 - Field 此类用作ViewModel集合项使用,模拟动态表单数据校验,简单包含4个属性:字段名称、字段显示名称、数据类型、数据值,表单主要根据数据类型验证输入数据值是否合法。...创建验证器 验证属性写法有两种: 可以实体属性上方添加特性(本文不作特别说明,百度文章介绍很多); 通过代码形式添加,如下方,创建一个验证器类,继承自AbstractValidator,在此验证器构造函数写规则验证属性...验证器,注意前面使用RuleForEach表示关联集合项验证器。

12610
您找到你想要的搜索结果了吗?
是的
没有找到

dotnet OpenXML WPF 解析实现 PPT 文本描边效果

本文是使用 WPF 做个 PowerPoint 系列博客,本文来告诉大家如何解析 PPT 里面的文本描边效果, WPF 应用绘制出来,实现像素级相同 背景知识 开始之前,期望你了解了 PPT 解析入门知识...如对 PPT 解析了解很少,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件 PPT 里面可以给文本某些文字设置描边效果,描边效果从 OpenXML 层上是不属于特效,只是属于边框属性...,需要在自己业务代码里面,进行判断 获取文本框文本,可以使用如下代码 var textBody = shape.TextBody!...Text; 接下来就是界面绘制 绘制 如 WPF 文字描边 博客,先通过 FormattedText 构建出 Geometry 对象,再通过 Geometry 对象进行绘制 代码如下...代码 本文所有代码和测试文件放在github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,命令行里面输入以下代码,即可获取到本文代码

94420

如何实现文字描边

前言 WPF TextBlock 提供了大部分常用文字修饰方法,日常使用基本够用。如果需要更丰富表现方式,WPF 也提供了其它用起来复杂一些工具去实现这些需求。...例如这篇文章介绍文字描边,就有几种方法可以 WPF 呈现。这篇文章将简单介绍这实现文字描边方法。 2....将文字转换位 Geometry 实现文字描边关键是使用 FormattedText 将文字转换为 Geometry,然后通过其它技术将 Geometry 加上边框再画出来。... WPF ,Geometry 及它派生类(EllipseGeometry、LineGeometry、PathGeometry、RectangleGeometry 等)用于描述 2D 形状集合图形...使用 DrawingContext WPF DrawingContext 是一个基础绘图对象,用于绘制各种图形,它一个最简单使用方式是重载 UIElement OnRender 方法,在这个方法绘制

1K30

WPF 调用 InvalidateVisual 不触发 OnRender 原因

那么什么时候会触发 OnRender 方法,什么时候不会触发 WPF 通过 InvalidateVisual 方法可以告诉 WPF 框架,当前这个控件需要重新绘制元素,但是调用这个方法不是立刻进行绘制...而是等待 WPF 下一次更新界面就会触发控件刷新 换句话说,调用 InvalidateVisual 方法时候不会立刻触发 OnRender 方法,需要等待下一次 Dispatcher Render...WPF 行为 本文代码放在 github 欢迎小伙伴访问 我创建了 Foo 类,继承 FrameworkElement 类,这样就能让这个 Foo 使用十分底层方法,也减少了 WPF 框架其他业务逻辑...,文本控件其实就是 Foo 渲染方法触发时候给出当前刷新时间 还有几个按钮分别是调用 InvalidateVisual 和控件是否可以显示等属性 ?...有的,如果使用 VisualBrush 获取元素显示状态,那么此时元素即使不在视觉树上也能进行显示,当然这也就出现了 VisualBrush 内存泄漏问题了,详细请看 wpf VisualBrush

2.1K20

WPF 文字描边

本文告诉大家如何写出描边字体 WPF如果需要写入描边需要使用 FormattedText 将文字转换为 Geometry 然后通过画出 Geometry 边框和填充画出描边 ?...首先创建一个类继承 UIElement 这样就可以重写 OnRender 方法在里面画出文字 假设需要画出文字是 欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF...调用 formattedText.BuildGeometry 可以创建 Geometry 参数传入左上角坐标 然后就是画出这个 Geometry 通过这个 Pen 设置描边宽度和颜色...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

1.1K20

WPF 文字描边

本文告诉大家如何写出描边字体 WPF如果需要写入描边需要使用 FormattedText 将文字转换为 Geometry 然后通过画出 Geometry 边框和填充画出描边 首先创建一个类继承...UIElement 这样就可以重写 OnRender 方法在里面画出文字 假设需要画出文字是 欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客...var formattedText = new FormattedText(str, CultureInfo.CurrentCulture, FlowDirection.LeftToRight...可以创建 Geometry 参数传入左上角坐标 然后就是画出这个 Geometry 通过这个 Pen 设置描边宽度和颜色 drawingContext.DrawGeometry...Pen(new SolidColorBrush(Colors.Black), 1), geometry ); 打开 xaml 添加这个控件运行代码就可以看到上面界面

48730

探究WPF中文字模糊问题:TextOptions用法

像素对齐和抗锯齿 我们经常听到WPF具有分辨率无关性这个说法,因为WPF使用是与设备无关绘图系统,为字体和形状等内容指定大小或者尺寸数值并不是真实像素,WPF称之为设备无关单位。...渲染过程WPF会自动把设备无关单位转换为物理像素,由于设备差异以及DPI设置不同,转换之后像素很少是整数,然而无法使用零点几个像素点去绘制,WPF使用抗锯齿特性进行补偿。...TextOptions使用 TextOptions定义一组影响文本元素显示方式附加属性。...超高分辨率增加了文本显示细节清晰度,使其更便于长时间阅读。WPFClearType可以朝Y轴方向抗锯齿,使文本字符中平缓曲线顶端和底端变得平滑。...取值范围如下: 枚举名 值 说明 Auto 0 自动确定是否使用适用于动画文本或静态文本质量设置来绘制文本。 Fixed 1 以最高静态质量呈现文本。

17910

假装可变字体

,它允许将同一字体多个变体统合进单独字体文件。...从而无需再将不同字宽、字重或不同样式字体分割成不同字体文件。你只需通过CSS与一行@font-face引用,即可获取包含在这个单一文件各种字体变体。...假装可变字体 可是我不知道怎么 WPF 里用可变字体,而且为了一个小小按钮小小动画,居然要添加一个几十兆大小字体,这性价比实在低,低到不能接受。...文字描边基本原理是使用 FormattedText BuildGeometry 拿到 Geometry,然后通过 Shape 画出来,最后通过 Stroke, StrokeThickness 控制文字边框颜色和粗细...更多关于 WPF 设计和动画技巧,可以参考我这个项目: https://github.com/DinoChan/wpf_design_and_animation_lab

58520

WPF ElementName ContextMenu 无法绑定成功?试试使用 x:Reference!

WPF ElementName ContextMenu 无法绑定成功?试试使用 x:Reference!...,我们为一段文字一个部分绑定了主窗口一个属性,于是我们使用 ElementName 来指定绑定源为 WalterlvWindow。...▲ 使用普通 ElementName 绑定 以下代码就无法正常工作了 保持以上代码不变,我们现在新增一个 ContextMenu,然后 ContextMenu 中使用一模一样绑定表达式: <Window...如果调用去查找,得到是 null。详见:WPF NameScope。...而这是不允许。 为了解决循环依赖问题,我们可以考虑将 x:Reference 放到资源。因为资源是按需创建,所以这不会造成循环依赖。 那么总得有一个对象来承载我们绑定源。

2.9K50

.NET Core 3.0WPF使用IOC图文教程

我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天写一个代码生成器客户端时候用到了WPF,所以就把WPF创建以及使用...作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/11099358.html 步骤 通过命令行创建wpf项目,当然你也可以通过vs2019来进行创建。...我们首选要安装下Microsoft Extensions DependencyInjectionnuget包,当然你也可以通过下面的方式进行添加,不过最好还是通过nuget方式引入最新预览版即可。...{ _text = text; } public string GetText() { return _text; } } 接下来我们入口...App.xaml.cs文件配置我们IOC容器,并入住我们服务,相信做过.NET Core项目的你,对下面的代码应该都非常熟悉,这里就不过多解释了,省浪费大家宝贵时间。

80730

wpf绘图性能分析

添加 AddChild(new DrawVisualShow(this)); 添加10000个图形节点大约1-2s,10w个图形需要5-6s,还是很慢,绘制时候会调用gpu,但效率没提升多少,...wpf使用UIElement绘制,通过事件响应机制绘制,事件响应有很多坑 wpf一些坑 wpfc#快速开发ui框架,你面有很多坑汇总一下 FrameworkElementparent获取不到父节点...wpf有显示树和逻辑树结构,使用VisualTreeHelper.GetParent可以获取parent获取不到父节点 mousemove不连续,mouseup事件丢失(mousemove状态监测...) mousemove事件不连续,需要CaptureMouse、ReleaseMouseCapture 个人经历,在做拖拽矩形时,位置计算点在left、top位置,没有矩形中心区域计算错误导致,...

88730

WPF 跨线程 UI 方法

本文告诉大家如何在 WPF 使用多线程 UI 方法 很多时候都是使用单线程 UI 但是有时候需要做到一个线程完全处理一个耗时界面就需要将这个线程作为另一个 UI 线程 WPF 可以使用...VisualTarget 做到多个 UI 线程绘制,注意这里 WPF 渲染线程只有一个,多个 UI 线程无法让渲染速度加快。...如果一个界面有很多 Visual 那么渲染速度也不会因为添加 UI 线程用时间比原来少 WPF VisualTarget 可以用来连接多个不同线程 UI 元素,使用时候只需要创建,然后另一个...}); 创建一个 VisualTarget 需要用到 HostVisual 通过 HostVisual 可以多个线程连到视觉树,所以创建 HostVisual 需要在主线程 public MainWindow...,这里文字是另一个线程绘制,但是也是和主界面相同线程渲染 ?

1.7K30

如何将文字转换为对应PathGeometry

其实我们可以使用FormattedTextBuildGeometry将字符串转成对应Geometry 首先我们要构造一个FormattedText对象 ?...例子参数分别为:要渲染字符串,CultureInfo,文字布局方向,字体信息,字号,Brush,以及PixelsPerDip就是每个WPF单位代表像素值 当然还有其他构造方法,可以自主调整 接下来调用...这样就可以得到对应Geometry了 此外,还可以通过下面这个方法从Geometry获得对应Path ? 最后效果如下: ?...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

1.5K30

【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解

WebBrowser控件可以通过以下步骤来添加和使用Visual Studio打开WPF应用程序并打开窗口XAML文件。控件库中找到WebBrowser控件并将其拖放到窗口中。...如果需要,可以通过设置WebBrowser控件属性来更改用户代理字符串。1.属性介绍WPFWebBrowser控件常用属性如下:Source:设置WebBrowser控件要显示网址。...嵌入浏览器:WebBrowser控件可以作为WPF应用程序内置浏览器使用,允许用户应用程序浏览互联网。...扩展WPFWebBrowser控件支持通过JavaScript与HTML页面进行交互,可以C#代码调用JavaScript函数,同时也可以JavaScript代码调用C#方法。...因此,可以通过JavaScript传递参数来实现WPFWebBrowser控件之间交互。WPFWebBrowser控件可以使用InvokeScript方法来调用JavaScript函数。

71012
领券