WPF-控件的常用属性-单例-隧道事件

news2025/2/27 7:37:01

特殊字符

小于<

大于>

空格xml:space="preserve"

例如:TextBox Grid.Column="1" xml:space="preserve">aaaaa .</TextBox>

从一个xaml文件中获取xaml内容

//DependencyObject是wpf控件的基类,它可以放到任何类型容器中
DependencyObject rootElement;
using (FileStream fs = new FileStream(xamlFile,FileMode.Open))
{
    rootElement = (DependencyObject)XamlReader.Load(fs);
}
this.Content = rootElement;
//根据name获取xaml中的button
Button button = (Button)LogicalTreeHelper.FindLogicalNode(rootElement, "btnName");
button += buttonClick;

隧道事件

隧道路由事件,方向与冒泡路由事件相反,从最外层往里层。隧道事件一般和冒泡事件成对出现,只不过事件名称前面加上Preview。

隧道事件的可以先使用preview*Down截获。隧道事件总是在冒泡事件触发前触发。例如:

键盘事件

隧道-冒泡

PreviewKeyDown-KeyDown

PreviewTextInput-TextInput

PreviewKeyUp-KeyUp

等等

鼠标事件

MouseEnter\MouseLeave直接事件

PreviewMouseMove\MouseMove隧道或者路由事件
鼠标单击事件其实是捕捉到鼠标按键释放事件
Mouse.Capture鼠标捕获,当鼠标被捕获时,鼠标就不能点击其他位置
DrapDrop.DoDragDrop()可以设置拖动事件(如拖动textbox中的文本到另一个TextBox)

字体

可以将字体加入资源中,FontFamily=“./#bayern”(不用写tff扩展名)
当字体过小时,可能会出现不清晰的情况如字体大小小于15,可以使用TextOptions.TextFormattingMode="Display"来设置

控件

使用_作为快捷点,如_A
Label有一个Target属性,可以快速链接到某个控件<Lable Target="{Binding ElementName=txtBox}">Choose _A</Label>,也就是快速把焦点定位在某个控件上

Button

IsCancel属性,当为true时,按住ESC键会执行
IsDefault属性,当为true时,按住Enter键会执行

RadioButton

要设定GroupName

ToolTip

任何控件都可以使用ToolTip属性
复杂的ToolTip可以使用控件的嵌套属性<Button.ToolTip>
ToolTip设置提示出现的位置<ToolTip Placement="Mouse" HorizontalOffset="25"> 以鼠标为基准,水平偏移25

Popup

设置IsOpen属性来打开或者关闭

ScrollViewer

CanContentScroll="True"根据元素滚动,而不是根据行

Expander

属于带有Header的内容控件
ExpandDirection属性决定向哪里扩展
在这里插入图片描述

TextBox

TextWrapping属性:可自动折行
MaxLength属性:最大长度
SelectionStart选中文本开始的位置
SelectionLength:选中长度
SelectionText:选中文本
SpellCheck.IsEnable拼写检查:不支持中文

Slider

TickPlacement属性设置显示刻度
IsSelectionRangeEnable设置某个范围(如背景色不同)
在这里插入图片描述

ProgressBar

IsIndeterminate属性是否有脉冲动画

Calendar

DisplayMode
DisplayDateStart
DisplayDateEnd
SelectedMode范围

UniformGrid

提供一种在网格(网格中的所有单元格都具有相同的大小)中排列内容的方法, 相当于简化版本的Grid

Application

在App.xaml中,设置ShutdownMode属性可以设置关闭Application的方式

事件

Startup在调用run之后,主窗口显示之前触发
Exit事件在关闭之前触发
SessionEnding事件在Windows对话结束的时候触发,如注销用户,关闭计算机
DispatcherUnhandledException在有未处理的异常时触发

显示初始界面

将图片设置为SplashScreen

读取当前Application对象

Application.Current.MainWindow

单例

  1. 引用Microsoft.VisualBasic
  2. 创建一个继承自ApplicationServices.WindowsFormsApplicationBase类SignalApplicationServices
  3. 在该类的构造函数中设置this.IsSingleInstance=true
  4. 重写该类的OnStartup方法
WPFApp app
app = new WPFApp();
app.Run();
return false;
  1. 重写onStartupNextInstance方法
    app.showWindow
  2. 在Main函数中
SignalApplicationServices app = new SignalApplicationServices();
app.run();

绑定到非元素对象

Source属性
RelativeSource
DataContext

资源

定义资源一定要在使用资源之前
Application并不是资源的最后一级,系统中的资源才是,使用三个类
SystemColor
SystemFont
SystemParmams
如:<Button Foreground="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>

资源字典

新建WPF资源字典
使用资源字典
必须创建ResourceDictionary

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

然后正常使用

程序集共享资源字典

第一种方法

ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("类库名;component/资源字典文件.xaml", UriKind.Relative);
this.btn.BackGround = (Brush)rd["key"];

第二种方法
类库中的资源必须放在Themes文件夹下,且资源字典名称为generic.xaml必须这样定义

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WpfApp6"
                    >
    <ImageBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:类名},ResourceId=资源id}"  ImageSource="333.png"></ImageBrush>
</ResourceDictionary>

使用资源时,必须是动态资源

<Button Background={DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type 引入的名称空间.类名},ResourceId=资源ID}}/>

Style

样式事件

<Style>
	<EventSetter Event="FrameworkElement.MouseEnter"  Handler="FrameworkElement_MouseEnter"/>
</Style>

基于其他样式

<Style BasedOn={StaticResource BaseStyle}>

形状

使用Virebox控件缩放形状

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 安装“安装程序向硬盘复制文件时遇到错误[Errno 5] Input/output error”错误解决过程记录

前阵子装 Ubuntu&#xff0c;原本已经装了几百遍的系统它又双叒叕出问题了&#xff0c;问题内容就如标题看到的那样。解决过程中经历了很多坎坷&#xff0c;不过好在最后还是成功了~ 下面整理了一下我解决问题的过程&#xff0c;需要自取~ 方法 1&#xff1a;烧录 U 盘时文件格…

chapter3——处理多个时钟

目录1.多时钟域2.多时钟域设计的难题3.多时钟设计的处理技术时钟命名规则分模块设计跨时钟域4.跨时钟域同频零相位差时钟同频恒定相位差时钟非同频、可变相位差时钟整数倍频率的时钟非整数倍频率的时钟5.握手信号方法6.使用同步FIFO传输数据7.异步FIFO1.多时钟域 常见的多时钟…

linux环境验证c++程序库间调用

目录 0 背景 1 VMware、以及linux安装 2 安装QtCreator 2.1 下载速度慢&#xff0c;使用国内镜像 2.2 执行有问题&#xff0c;修改权限 2.3 验证是否可用 2.4 调试&#xff08;待解决&#xff09; 3 开发程序进行验证 4 其他问题 4.1 虚拟机与主机无法拷贝文件&#x…

python3-函数与参数以及空值

目录画星星空值None函数与Lambda一、函数定义二、引用变量查找三、传值调用函数四、函数对象五、函数文档旋转角度绘制函数图形画星星 程序2-7-7主要使用turtle.forward前进操作和turtle.left左转操作在屏幕上画星星。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- #2-7-…

操作符详解(1)

目录 一、操作符分类 二、算术操作符 三、位移操作符 1、<< 左位移操作符号 2、>> 右位移操作符 四、位操作符 1、& --- 按位与 2、| --- 按位或 3、^ --- 按位异或 变态题 五、赋值操作符 符合赋值符 一、操作符分类 操作符也被称为运算符。 …

小程序注册安装以及新手快速入门教程

一、注册并安装微信小程序 1.打开 https&#xff1a;//mp.weixin.qq.com/ 网址&#xff0c;点击立即注册即可进入小程序开发账号的注册流程&#xff0c;注册的账号类型选择小程序。 2.根据注册要求注册&#xff0c;发送邮箱信息&#xff0c;接收到微信团队发送的邮箱信息后&am…

水泥行业工业互联网平台(CCPS)解决方案

水泥行业经过过去十年的发展和调整&#xff0c;基本实现了集团化。集团管控当前面临的主要问题是数字的分散化和碎片化&#xff0c;建设工业互联网是新时期加强集团管控的必经之路。 CCPS平台优势 1.融合SOA理念的架构平台和系统框架。具有跨平台、易维护、可集成、可扩展、分…

Spark - 介绍及使用 Scala、Java、Python 三种语言演示

一、Spark Apache Spark 是一个快速的&#xff0c;多用途的集群计算系统&#xff0c; 相对于 Hadoop MapReduce 将中间结果保存在磁盘中&#xff0c; Spark 使用了内存保存中间结果&#xff0c; 能在数据尚未写入硬盘时在内存中进行运算。 Spark 只是一个计算框架, 不像 Hadoo…

几率波量子雷达/反事实量子通信

物理学中有哪些不可思议&#xff08;违背直觉&#xff09;的事实&#xff1f; - 知乎 利用粒子的双缝干涉原理&#xff0c;可以在物体偏离的情况下&#xff0c;探测到物体。 我们不需要用光子照射物体&#xff0c;就能感知到是否有物体存在。 这是什么意思&#xff1f; 这就…

3516DV300 推流

3516DV300 推流 基于ffmpeg将编码后的264文件&#xff08;或者直接推流&#xff09;推流出去&#xff0c;使用ffplay进行播放和验证。 ffmpeg版本&#xff1a;N-109124-g63db6a02a7 RELEASE&#xff1a;5.1.git ffmpeg udp文件推流 命令行 这里用的是开发板编码出的码流&…

MIT 6.S081 Operating System Lecture5 (随意的笔记)

系列文章目录 文章目录系列文章目录TrapsA questionsyscallTraps 用户空间和内核空间的切换通常被称为 trap example: shwrite()ecall(); //write 通过 ecall() 指令执行系统调用之后跳转执行到 usertrap 如下图的执行过程。最终sys_write将要显示的数据输出到 console 上 …

【Java 设计模式】创建者模式 之原型模式

原型模式1 定义2 角色3 三好学生案例3.1 浅克隆实现3.1.1 浅克隆定义3.1.2 类图3.1.3 实现3.2 深克隆实现3.2.1 深克隆定义3.2.2 实现1 定义 将一个已经创建好的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 2 角色 抽象原型类&#xff1…

Chrome的使用技巧

1. 请求重发 F12 -> Network -> Replay XHR 2. 修改请求参数后重发 F12 -> Network -> Copy -> Copy as fetch 然后在 Console 控制台 ctrl + v ,而后就可以对请求的参数进行编辑,回车就会重更新请求 再在 Network 就可以看到这个请求了 3. 复制对象 (…

echarts入门到实战

官网地址&#xff1a;Apache ECharts 前言 我们应该经常看到或听到”数据可视化“这个词&#xff0c;他其实就是将数据通过各种图表更加直观的展现变化趋势&#xff0c;对比&#xff0c;峰值等等。数据可视化也是未来的趋势。 作为前端程序员&#xff0c;数据可视化也是我们必…

多任务全景感知YOLOPv2:目标检测、freespace、车道线

今年年初出了一片《端到端的多任务感知网络HybridNet&#xff0c;性能优于YOLOP》&#xff0c;论文 HybridNets: End2End Perception Network&#xff0c;代码已开源&#xff0c;在目标检测、车道线、freespace的多任务感知任务上性能优于YOLOP&#xff0c;取得了新SOTA。视频效…

大厂Java面试必备面试题:基础语法-数据类型-编码-注释-运算符-关键字-流程控制语句

基础语法 数据类型 Java有哪些数据类型 定义&#xff1a;Java语言是强类型语言&#xff0c;对于每一种数据都定义了明确的具体的数据类 型&#xff0c;在内存中分配了不同 大小的内存空间。 分类&#xff1a; 基本数据类型 Java源代码---->编译器---->jvm可执行的Java字…

如果Controller里有私有的方法,能成功访问吗?

背景 写代码的时候&#xff0c;复制粘贴的时候&#xff0c;没注意到方法的属性&#xff0c;就导致了Controller里有了一个私有的方法&#xff0c;然后访问这个接口的时候就报了空指针异常&#xff0c;找了好久才找到是这个原因。 来看一个例子 Service public class MyServi…

Netty面试经典问题

目录 Netty是怎么实现高性能设计的&#xff1f; 简单介绍一下对于Netty的了解 Netty的高性能表现在哪些方面 介绍一下Java中的几种IO模型 一个通俗例子读懂BIO、NIO、AIO BIO与NIO的区别 Netty的线程模型 什么是零拷贝 Netty中的模块组件&#xff1a; Netty 中有哪种…

Linux rpm方式安装 MYSQL8.0

1.卸载原有的mysql 数据库 1&#xff09;查找安装的mysql软件包和依赖包&#xff1a; rpm -pa | grep mysql 显示结果&#xff1a; mysql80-community-release-el7-1.noarch mysql-community-server-8.0.11-1.el7.x86_64 mysql-community-common-8.0.11-1.el7.x86_64 mysql…

ReLU,Sigmoid,Tanh,softmax【基础知识总结】

一、ReLU&#xff08;Rectified Linear Activation Function&#xff09;1、优点2、缺点补充二、Sigmoid1、优点2、缺点三、Tanh四、Sigmoid 和 Tanh 激活函数的局限性五、softmax&#xff08;待补充&#xff09;激活函数的引入是为了增加神经网络模型的非线性&#xff0c;没有…