WPF對象樣式

基本樣式設置

Style 設置指定對象的屬性

屬性:

TargetType 引用在哪個類型上面,例如Button、Textblock。。

如果在控件對象里面設置Style,則TargetType必須指定當前控件名

只在作用域里面有效果,其他的相同控件沒有影響,作用域類似于C#中的大括號

Setters 集合 設置屬性的集合 可以省略

原理就是反射,根劇控件的屬性進行設置值,反射到控件屬性

設置的屬性 優先使用控件上的指定屬性,控件屬性>Style屬性

Property 屬性

Value 屬性的值

Triggers 集合 觸發器 監聽 不可以省略

Property 監聽的屬性

Value 當監聽的屬性 == 這個Value的時候 執行以下方法 在下方寫滿足之后的方法 Trigger.Setters(此時的Setters也可以省略)

<Button><Button.Style><Style TargetType="Button"><!--<Style.Setters> 可以省略--><Style.Setters><Setter Property="Content" Value="Btn"/><Setter Property="FontSize" Value="50"/><Setter Property="Height" Value="100"/><Setter Property="Width" Value="200"/><Setter Property="Background" Value="Orange"/></Style.Setters></Style></Button.Style>
</Button>

<Style.Triggers><Trigger Property="Background" Value="Orange"><!--滿足條件執行--><!--<Trigger.Setters> 可以省略--><Trigger.Setters><Setter Property="Content" Value="被Trigger改變了"/></Trigger.Setters></Trigger>
</Style.Triggers>

由此可以看到我們按鈕的Content被觸發器給修改了

樣式觸發器設置

樣式觸發器:根據用戶行為,改變控件外觀

MultiTrigger 多重條件

需求:當需要多個條件一起才能觸發的時候,使用

<MultiTrigger><MultiTrigger.Conditions><Condition Property="Background" Value="Orange"/><Condition Property="Content" Value="Btn"/></MultiTrigger.Conditions><!--兩個都滿足才會觸發--><!--<MultiTrigger.Setters> 可以省略--><MultiTrigger.Setters><Setter Property="Foreground" Value="Green"/></MultiTrigger.Setters>
</MultiTrigger>

還是上面的圖為案例代碼:

EventTrigger 事件觸發

需求:當需要點擊獲取鼠標等事件觸發的時候,使用此方法

此方法僅可以使用動畫去變化,不可以直接Setter

<!--必須設置路由事件 RoutedEvent-->
<EventTrigger RoutedEvent="MouseMove"><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.5" To="200"Storyboard.TargetProperty="Width" /><DoubleAnimation Duration="0:0:0.5" To="400"Storyboard.TargetProperty="Height" /></Storyboard></BeginStoryboard>
</EventTrigger>

當我鼠標進入的時候,變成這個樣子:觸發生效

補充

需求:我需要鼠標進入的時候變大,鼠標出去的時候正常大小

利用觸發器觸發和離開的方法

<Trigger Property="IsMouseOver" Value="True"><!--EnterActions 開始觸發--><Trigger.EnterActions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.5" To="400"Storyboard.TargetProperty="Width"/><DoubleAnimation Duration="0:0:0.5" To="400"Storyboard.TargetProperty="Height"/></Storyboard></BeginStoryboard></Trigger.EnterActions><!--ExitActions 退出觸發--><Trigger.ExitActions><BeginStoryboard><Storyboard><DoubleAnimation Duration="0:0:0.5" To="200"Storyboard.TargetProperty="Width"/><DoubleAnimation Duration="0:0:0.5" To="100"Storyboard.TargetProperty="Height"/></Storyboard></BeginStoryboard></Trigger.ExitActions>
</Trigger>

鼠標進入:

鼠標離開:

注意:觸發器的渲染是從上至下,同樣的觸發下面的動作會覆蓋上面的動作。

訪問級別

越接近對象,級別越高

樣式繼承

BasedOn: 繼承父樣式

樣式繼承必須單獨寫在資源里面

SunBtn樣式中只寫了前景色,因為繼承了PreBtn的樣式,所以長寬背景色都繼承了。

<Window.Resources><Style TargetType="Button" x:Key="preStyle"><Setter Property="Height" Value="80"/><Setter Property="Width" Value="200"/><Setter Property="Background" Value="Orange"/></Style><Style TargetType="Button" x:Key="sunStyle" BasedOn="{StaticResource preStyle}"><Setter Property="Foreground" Value="Red"/></Style>
</Window.Resources>
<StackPanel><Button Content="PreBtn" Style="{StaticResource preStyle}" /><Button Content="SunBtrn" Style="{StaticResource sunStyle}"/>
</StackPanel>

注意:可以多層次繼承和C#中的類一樣,但是不可以繼承多個。

優先級,自己的大于繼承的,自己沒有找繼承。總結:越接近對象,級別越高

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39002.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

統一的可觀察性和安全性如何增強你的業務?

作者&#xff1a;來自 Elastic Michael Calizo 利用人工智能、異常檢測和增強攻擊發現功能&#xff0c;在一個平臺上增強組織的可觀察性和安全性能力 當今數字環境中的組織越來越關注服務可用性&#xff0c;并保護其軟件免受惡意篡改和攻擊。傳統的安全和可觀察性工具通常以孤…

VBA打開其他Excel文件

前言 本節會介紹通過VBA實現打開其他excel文件&#xff0c;包括模糊匹配文件名稱、循環同時打開多個文件&#xff0c;并獲取工作表及工作簿進行數據操作后&#xff0c;對打開的文件進行保存并關閉操作。 一、打開固定文件名稱的文件 場景說明&#xff1a; 1.新建一個宏文件VBA…

通過Python將視頻添加圖片

from PIL import Image from moviepy.editor import *from configs.settings import PROJECT_PATHdef movie_add_image(video_config, type, video_path, out_path):# 加載視頻文件video VideoFileClip(video_path)all_time 0for config in video_config:image config.get(t…

【NFS】【部署】NFS文件系統Server端部署,及客戶端掛載

服務器準備 主機名IPk8s04192.168.199.24k8s05192.168.199.25 配置husts文件 vi /etc/hosts #追加 192.168.199.24 k8s04 192.168.199.25 k8s05Server端部署 yum install -y nfs-utils創建NFS存儲目錄 mkdir /data配置NFS服務 vi /etc/exports #添加 /data 192.168.…

【React】上傳文章封面基礎實現

<Form.Item label"封面"><Form.Item name"type"><Radio.Group onChange{onTypeChange}><Radio value{1}>單圖</Radio><Radio value{3}>三圖</Radio><Radio value{0}>無圖</Radio></Radio.Group&…

react 自定義 年-月-日 組件,單獨選擇年、月、日,并且產生聯動

自定義 年-月-日 組件 code import { useState } from react function Year_Month_Date() {const [yearList, setYearList] useState([])const [monthList, setMonthList] useState([])const [dateList, setDateList] useState([])const [currentYear, setCurrentYear] u…

javaweb(四)——過濾器與監聽器

文章目錄 過濾器Filter基本概念濾波器的分類: 時域和頻域表示濾波器類型1. 低通濾波器(Low-Pass Filter)2. 高通濾波器(High-Pass Filter)3. 帶通濾波器(Band-Pass Filter)4. 帶阻濾波器(Band-Stop Filter) 濾波器參數1. 通帶頻率(Passband Frequency)2. 截止頻率(Cutoff Frequ…

【Kotlin】Kotlin 基礎語法指南

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…

dell g15機器awcc刪除后無法重新安裝

那是因為注冊表并沒有刪除干凈&#xff0c;需要手動刪除&#xff0c;但是普通小白又沒有時間進行手動刪除&#xff0c; 這個個時候就需要微軟的刪除工具的幫忙了. 微軟軟件刪除工具&#xff1a;修復阻止程序安裝或刪除的問題 - Microsoft 支持

Android的activity廣播無法接收,提示process gone or crashing原因有可能是那些?

當Android的Activity無法接收廣播&#xff0c;并且收到“process gone or crashing”的提示時&#xff0c;可能的原因有多種。以下是一些常見的原因和排查步驟&#xff1a; Activity生命周期問題&#xff1a; 如果Activity在廣播發送之前就已經被銷毀&#xff08;例如&#xf…

vue3 elementplus Springboot 課程購買系統案例源碼

系統演示 項目獲取地址 Springboot vue3 elementplus 課程購買系統案例源碼 附帶系統演示&#xff0c;環境搭建教程,開發工具 技術棧:SpringBoot Vue3 ElementPlus MybatisPlus 開發工具:idea 后端構建工具:Maven 前端構建工具:vite 運行環境:Windows Jdk版本:1.8 Nod…

《昇思25天學習打卡營第04天|數據集Dataset》

數據集 環境準備 # 實驗環境已經預裝了mindspore2.2.14&#xff0c;如需更換mindspore版本&#xff0c;可更改下面mindspore的版本號 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.14 import numpy as np from mindsp…

基于Tools體驗NLP編程的魅力

大模型能理解自然語言&#xff0c;從而能解決問題&#xff0c;但是就像人類大腦一樣&#xff0c;大腦只能發送指令&#xff0c;實際行動得靠四肢&#xff0c;所以LangChain4j提供的Tools機制就是大模型的四肢。 大模型的不足 大模型在解決問題時&#xff0c;是基于互聯網上很…

Tomcat部署與優化

Tomcat部署與優化 Tomcat簡述 server&#xff1a; 服務器&#xff0c;Tomcat運行的進程實例&#xff0c;一個Server中可以有多個service&#xff0c;但通常就一個 service&#xff1a;服務&#xff0c;用來組織Engine&#xff08;引擎&#xff09;和Connector&#xff08;連接…

gdb及其使用

gdb調試一&#xff1a; 首先進入gdb&#xff0c;確定好進程&#xff0c;輸入進程號 確定要調試哪個文件&#xff0c;然后輸入&#xff1a;&#xff08;b為打斷點&#xff09; (gdb) b serialization_protobuffer.h:write<ros::serialization::OStream>(ros::serializat…

MySQL的limit關鍵字和聚合函數講解

目錄 一、MySQL數據庫介紹二、MySQL聚合函數三、MySQL數據排序分組四、MySQL的limit關鍵字 一、MySQL數據庫介紹 MySQL是一種廣泛使用的開源關系型數據庫管理系統&#xff0c;由瑞典MySQL AB公司開發&#xff0c;后被Sun Microsystems收購&#xff0c;最終成為Oracle公司的一部…

RANSAC空間圓擬合實現

由初中的幾何知識我們可以知道&#xff0c;確定一個三角形至少需要三個不共線的點&#xff0c;因此確定一個三角形的外接圓至少可用三個點。我們不妨假設三個點坐標為P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)。 圓方程的標準形式為&#xff1a; (xi-x)2(yi-y)2R2 &#xff08;1…

【Annotation】SpringBoot自定義注解

1. 自定義注釋是基于SpringAOP實現的 Spring AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面編程&#xff09;是Spring框架中的一個強大功能模塊&#xff0c;它實現了AOP編程模型&#xff0c;允許開發者將橫切關注點&#xff08;如日志記錄、事務管理、安全…

新火種AI|蘋果要將蘋果智能做成AI時代的APP Store?

作者&#xff1a;一號 編輯&#xff1a;美美 蘋果還是想要自己做AI時代的“APP Store”。 自從去年開始落了隊&#xff0c;蘋果現在AI上開始高歌猛進。今年WWDC上展示的AI產品和與OpenAI的合作只是開始。有消息稱&#xff0c;蘋果正與Meta等AI巨頭展開深入合作&#xff0c;這…

隨想錄 Day 74 Floyd / A*

隨想錄 Day 74 Floyd / A* Bellman_ford 隊列優化 97. 小明逛公園 時間限制&#xff1a;1.000S 空間限制&#xff1a;256MB 題目描述 小明喜歡去公園散步&#xff0c;公園內布置了許多的景點&#xff0c;相互之間通過小路連接&#xff0c;小明希望在觀看景點的同時&#xff…