WPF常备

2023-12-30 14:40
文章标签 wpf 常备

本文主要是介绍WPF常备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WPF常备

  • Font Awesome字体使用
  • PropertyChanged.Fody
    • Nuget安装
    • 添加到FodyWeavers.xml
  • Costura.Fody
  • BaseViewModel
  • BasePage
  • BaseAttachedProperty
  • BaseValueConverter
  • BooleanToVisiblityConverter
  • Storyboard
  • AttachedProperty实现逆时针顺时针旋转功能
  • 几种动画注意事项

Font Awesome字体使用

Step1: 下载地址为:https://fontawesome.dashgame.com/
在这里插入图片描述
Step2:复制 fontawesome-webfont.ttf 字体到项目中,并在字典中引用该字体
字典中引用字体

   <FontFamily x:Key="FontAwesome">pack://application:,,,/MafengWo;component/Fonts/#FontAwesome</FontFamily>

在这里插入图片描述

如取f110在这里插入图片描述

PropertyChanged.Fody

Nuget安装

安装 PropertyChanged.Fody NuGet 软件包并更新Fody NuGet包:

Install-Package Fody
Install-Package PropertyChanged.Fody

这个Install-Package Fody这是必需的,因为NuGet总是默认为任何依赖项的最古老和最错误的版本。

添加到FodyWeavers.xml

加到FodyWeavers.xml

<Weavers><PropertyChanged/>
</Weavers> 

特别提醒:VS2017 安装2.61 版本

Costura.Fody

方法同 PropertyChanged.Fody

<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"><Costura /><PropertyChanged/>
</Weavers>

BaseViewModel

 [AddINotifyPropertyChangedInterface]
public class BaseViewModel : INotifyPropertyChanged
{public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };public void OnPropertyChanged(string name){PropertyChanged(this, new PropertyChangedEventArgs(name));}
}

所有 ViewModel 全部继承自 BaseViewModel

该基类实现了 [AddINotifyPropertyChangedInterface] 接口,这样在编译的时候将PropertyChanged方法植入到public属性的Set方法中,这样就不必为每个Set都写PropertyChanged了

BasePage

public class BasePage<VM> : Pagewhere VM :BaseViewModel,new ()
{#region private Member/// <summary>/// The view Model associated with this page/// </summary>private VM mViewModel;#endregion#region Properties/// <summary>/// The animition the play when the page is first loaded/// </summary>public PageAnimation PageLoadAnimation { get; set; } = PageAnimation.SlideAndFadeInFromRight;/// <summary>/// The animition the play when the page is first unloaded/// </summary>public PageAnimation PageUnLoadAnimation { get; set; } = PageAnimation.SlideAndFadeInFromLeft;/// <summary>/// The time to Animation takes complete/// </summary>public float SlideSeconds { get; set; } = 0.8f;/// <summary>/// The view Model associated with this page/// </summary>public VM ViewModel{get{return mViewModel;}set{//if nothing has changed ,returnif (mViewModel == value)return;//Update the valuemViewModel = value;//Set data contenxt for this pagethis.DataContext = mViewModel;}}#endregion#region Constructorpublic BasePage(){if (PageLoadAnimation != PageAnimation.None)Visibility = Visibility.Collapsed;//Listen out for page loadingLoaded += BasePage_Loaded;//Create a default view modelthis.ViewModel = new VM();}#endregion#region Animation Load / Unload/// <summary>/// Once the page is loaded ,perform any requied animation/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private async void BasePage_Loaded(object sender, System.Windows.RoutedEventArgs e)// use void   {await AmimationIn();}public async Task AmimationIn(){if (PageLoadAnimation == PageAnimation.None)return

这篇关于WPF常备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/553164

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相

C# WPF燃气报警器记录读取串口工具

C# WPF燃气报警器记录读取串口工具 概要串口帧数据布局文件代码文件运行效果源码下载 概要 符合国标文件《GB+15322.2-2019.pdf》串口通信协议定义;可读取燃气报警器家用版设备历史记录信息等信息; 串口帧数据 串口通信如何确定一帧数据接收完成是个麻烦事,本文采用最后一次数据接收完成后再过多少毫秒认为一帧数据接收完成,开始解析出来。每次接收到数据更新一次re

WPF-快速构建统计表、图表并认识相关框架

一、使用ScottPlot.Wpf 官网地址:https://scottplot.net/quickstart/wpf/ 1、添加NuGet包:ScottPlot.Wpf 2、XAML映射命名空间:  xmlns:ScottPlot="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF" 3、简单示例: <ScottPlot:WpfP

C# wpf 实现游戏启动器界面制作的坑

用C# winform制作界面的时候发现背景图是带透明通道的会实现不了,于是用了个单独的类来实现底层背景图带透明 窗口原图: 。。。可是后面发现在鼠标悬浮Windows任务栏中此窗口预览图的时候只会渲染出控件了,没有了背景图。。。 网上找了很久没有找到好的解决办法,于是弃用了winform改用了wpf做游戏启动器的界面。  wpf的界面布局文件类似xml文档,实现背景透明的话不复杂

WPF 点在控件内 判断

文章来源于本人的cnblog克隆https://www.cnblogs.com/ZoeWong/p/18396165 Winform方法 Winform里点在控件内判断方法很简单,获取的Rectangle,然后用它Contains方法就行 WPF方法 WPF不行,但其实也差不多,方法如下: 前提:控件A是总体容器控件,控件B是其子控件,判断鼠标点是否在B内获取鼠标当前位置 Point

不可不知的WPF形状(Shape)

在WPF开发中经常需要进行绘制图形,可以利用Shape类型绘制基本的形状,而且Shape派生自FrameworkElement,属于UI元素范畴,可以直接利用XAML进行绘制。本文通过一些简单的小例子,简述如何通过Shape类绘制形状,仅供学习分享使用,如有不足之处,还请指正。 Shape类位于System.Windows.Shapes命名空间,而上篇文章介绍的Brush位于System.W

WPF RadioButton 使用MVVM方式绑定bool的值,总是丢失怎么办

在WPF中使用MVVM模式绑定RadioButton时,如果绑定一个bool类型的值,可能会遇到值丢失的问题。这通常是因为RadioButton的IsChecked属性与bool类型绑定存在直接转换的困难,尤其是在绑定到多个RadioButton时,RadioButton之间的关系也会导致值更新不一致。 为了在MVVM中正确地使用RadioButton绑定一个bool类型的值,我们可以使用Con

WPF中datagrid分页

namespace WpfApplication1{/// <summary>/// 枚举类型/// </summary>public enum sex{男,女};public class company{public string companyname;public string name;public string sex;public int age;public string job;

基于.NET6的WPF基础总结(上)

目录 一.常用属性介绍 二、 程序退出方式 三、布局样式 3.1 Panel的附加属性ZIndex 3.2 Grid(网格)布局 3.3 UniformGrid(均分布局) 3.4 StackPanel(堆积面板) 3.5 WrapPanel(换行面板)  3.6  DockPanel(停靠面板) 3.7 Canvas(画布布局)  3.8 个性化Border 3.9  G