WPF設計標準學習記錄17

在控件中的ControlTemplate的觸發器

<Button Content="將ControlTemplate定義在在控件中" Width="280" Height="40" Margin="10" Foreground="#747787"><Button.Template><ControlTemplate TargetType="Button"><Border x:Name="border" Background="Transparent" CornerRadius="5" BorderThickness="1" BorderBrush="#C9CCD5"><ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Content" Value="MouseOver" TargetName="contentPresenter"/></Trigger><Trigger Property="IsMouseOver" Value="False"><Setter Property="Content" Value="將ControlTemplate定義在在控件中" TargetName="contentPresenter"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Button.Template>
</Button>
元素類型屬性名稱屬性值/技術說明核心作用與優化建議
ButtonContent"將ControlTemplate定義在在控件中"文本硬編碼,建議改用資源綁定{x:Static}
Width280(固定寬度違反響應式規范,建議MinWidth="260"企業規范:HIG-2025-UI-003
Height40(固定高度限制多語言擴展,應啟用SizeToContent
Margin10(統一外邊距,推薦分層定義如Margin="5,10"
Foreground#747787(文字顏色未綁定到模板,需通過TemplateBinding傳遞)關鍵缺陷:顏色未生效
Button.TemplateTargetTypeButton(限定模板作用域)
ControlTemplate嵌套結構定義按鈕視覺樹(透明背景+動態內容切換)
Borderx:Name"border"(命名元素便于觸發器操作)應添加CacheMode="BitmapCache"優化渲染
BackgroundTransparent(透明背景可能影響點擊區域檢測)建議改用{x:Null}徹底移除背景層
CornerRadius5(圓角標準需統一,推薦引用資源CornerRadius.Medium
BorderThickness1(高DPI屏幕建議采用1.5)
BorderBrush#C9CCD5(淺灰邊框,應引用資源BorderSecondary
ContentPresenterx:Name"contentPresenter"(命名便于觸發器控制)
HorizontalAlignmentCenter(內容居中,但未同步TextBlock.TextAlignment
VerticalAlignmentCenter(符合企業布局規范)
ControlTemplate.Triggers交互邏輯通過觸發器實現鼠標懸停內容切換邏輯缺陷:直接修改內容而非樣式
TriggerPropertyIsMouseOver(檢測懸停狀態)
ValueTrue/False(觸發條件)
Setter.TargetNamecontentPresenter(操作目標元素)
Setter.PropertyContent(錯誤操作:應修改樣式屬性而非內容)違反MVVM模式
Setter.Value"MouseOver"/原文本(硬編碼內容,需改用DynamicResource

關鍵技術缺陷與改進方案

1. 內容與樣式邏輯混淆
<!-- 錯誤實現:直接修改內容 -->
<Setter Property="Content" Value="MouseOver"/><!-- 正確方案:修改視覺屬性 -->
<Setter TargetName="border" Property="BorderBrush" Value="#4A90E2"/>
<Setter TargetName="contentPresenter" Property="Foreground" Value="White"/>

在Resources定義的ControlTemplate的觸發器

<Window.Resources><ControlTemplate x:Key="ButtonTemplate" TargetType="Button"><Border Background="#C6D2FC" CornerRadius="5" BorderThickness="1" BorderBrush="#545BAD"><ContentPresenter  HorizontalAlignment="Center" VerticalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Width" Value="300"/></Trigger><Trigger Property="IsMouseOver" Value="False"><Setter Property="Width" Value="280"/></Trigger></ControlTemplate.Triggers></ControlTemplate>
</Window.Resources><Button Content="將ControlTemplate定義在資源中" Template="{StaticResource ButtonTemplate}" Height="40" Margin="10" Foreground="#707CA5"/>
元素類型屬性名稱屬性值/技術說明優化建議與規范參考
Window.Resources資源容器聲明定義全局可復用的控件模板資源
ControlTemplatex:KeyButtonTemplate(資源鍵名,需符合大駝峰命名法)建議分離至獨立資源字典Styles.xaml
TargetTypeButton(限定模板僅適用于按鈕控件)
BorderBackground#C6D2FC(淺藍色背景,應改用資源引用<

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

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

相關文章

【DeepSeek原理學習2】MLA 多頭隱變量注意力

解決的問題 Multi-Head Latent Attention&#xff0c;MLA——解決的問題&#xff1a;KV cache帶來的計算效率低和內存需求大以及上下文長度擴展問題。 MLA原理 MLA原理&#xff1a;其核心思想是將鍵&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;矩陣壓縮到…

LabVIEW 開發如何降本增效

在 LabVIEW 開發領域&#xff0c;如何在確保項目質量的同時降低開發成本&#xff0c;是眾多企業和開發者共同關注的焦點。這不僅關乎資源的高效利用&#xff0c;更影響項目的投資回報率和市場競爭力。下面&#xff0c;我們將從多個維度深入剖析降本策略&#xff0c;并結合具體案…

原理圖輸出網表及調入

一、輸出網表操作步驟 &#xff08;1&#xff09;選中.dsn文件&#xff0c;選者N或進入tools下拉列表選擇Creat Netlists &#xff08;2&#xff09;導出網表后的文件 二、網表的導入 &#xff08;1&#xff09;執行菜單命令“File-Import-Logic/netlist”&#xff0c;將原理…

MyBatis 分頁插件使用教程

MyBatis 分頁插件使用教程 MyBatis 是一款優秀的持久層框架&#xff0c;但原生的 MyBatis 并不支持分頁查詢。為了簡化分頁操作&#xff0c;MyBatis 官方和第三方提供了多種分頁插件&#xff0c;最常用的就是 MyBatis-Plus 的分頁插件。本文詳細介紹 MyBatis-Plus 分頁插件的使…

目錄穿越 + pickle反序列化 -- xyctf Signin WP

源代碼 # -*- encoding: utf-8 -*-File : main.py Time : 2025/03/28 22:20:49 Author : LamentXUflag in /flag_{uuid4}from bottle import Bottle, request, response, redirect, static_file, run, route secret aapp Bottle() route(/) def index():return…

區塊鏈技術:重塑供應鏈管理的未來

在當今全球化的商業環境中&#xff0c;供應鏈管理的復雜性和重要性日益凸顯。從原材料采購到產品交付&#xff0c;供應鏈的每一個環節都可能影響企業的運營效率和客戶滿意度。隨著區塊鏈技術的興起&#xff0c;供應鏈管理迎來了新的變革機遇。本文將深入探討區塊鏈技術在供應鏈…

ragflow本地部署(WSL下Ubuntu)

本地docker及 docker-compose版本 安裝參考&#xff1a; 實踐筆記-docker安裝及配置鏡像源實踐筆記-docker-compose安裝 1.下載源碼 git clone https://github.com/infiniflow/ragflow.git2.運行docker-compose拉取鏡像 cd ragflow/docker docker-compose up -d3.啟動報錯…

LTSPICE仿真電路:(二十六)跨阻放大器簡單仿真

1.前言 由于有個機會剛好了解了下跨阻&#xff0c;簡單做個這個仿真&#xff0c;實際上跨阻放大器應該要復雜的多&#xff0c;由于跨阻放大器實際上是將電流轉換為電壓&#xff0c;最需要注意的參數肯定是運放的偏置電流 2.跨阻放大器仿真 這篇是純記錄 這是一個將0-50uA電流…

androd的XML頁面 跳轉 Compose Activity 卡頓問題

解決 XML 點擊跳轉到 Compose Activity 卡頓問題 當從 XML 布局的 Activity 跳轉到 Compose Activity 時出現卡頓現象&#xff0c;這通常是由以下幾個原因導致的&#xff1a; 可能的原因及解決方案 1. Compose 首次初始化開銷 問題&#xff1a;Compose 框架首次初始化需要時…

基于Python的二手房數據挖掘與可視化深度分析

一、技術框架與數據概況 1.1 技術棧構成 import pandas as pd # 數據操作(v1.3.5) import numpy as np # 數值計算(v1.21.6) from pyecharts.charts import * # 交互式可視化(v1.9.1) from sklearn.preprocessing import StandardScaler # 數據標準化(可選擴展) …

從數據到成果:R 語言在氣象水文全流程中的關鍵技術應用

R語言在氣象、水文中數據處理及結果分析、繪圖實踐技術應用 R 語言是一門由統計學家開發的用于統計計算和作圖的語言&#xff08;a Statistic Language developed for Statistic by Statistician&#xff09;&#xff0c;由 S 語言發展而來&#xff0c;以統計分析功能見長。R …

2025最快解決root密碼忘記問題或重置root密碼root密碼忘記了怎么辦?如何最方便的找回或者重置root密碼?

root密碼忘記了怎么辦&#xff1f;如何最方便的找回或者重置root密碼&#xff1f; 1、完全不需要按照網絡上的那么麻煩的操作 2、看看我們機房的物理服務器有沒有默認的管理地址&#xff0c;如果有的話我們就把自己的電腦調整跟服務器一樣的網段&#xff0c;用瀏覽器訪問該服務…

面試題匯總06-場景題線上問題排查難點亮點

面試題匯總06-場景題&線上問題排查&難點亮點 【一】場景題【1】訂單到期關閉如何實現【2】每天100w次登錄請求,4C8G機器如何做JVM調優?(1)問題描述和分析(2)堆內存設置(3)垃圾收集器選擇(4)各區大小設置(5)添加必要的日志【3】如果你的業務量突然提升100倍…

C和C++有什么區別?

C和C是兩種不同的編程語言&#xff0c;雖然它們有許多相似之處&#xff0c;但也存在一些關鍵的區別。 C是一種過程化編程語言&#xff0c;專注于函數和流程控制&#xff0c;非常適合系統級編程。而 C是一種面向對象編程語言&#xff0c;支持類、對象和封裝、繼承、多態等特性。…

動態規劃-楊輝三角

118.楊輝三角 給定一個非負整數 numRows&#xff0c;生成「楊輝三角」的前 numRows 行。輸入&#xff1a;int 輸出&#xff1a;二元列表 思路&#xff1a; 面向結果編程&#xff01;&#xff01;&#xff01; class Solution {public List<List<Integer>> genera…

powershell綁定按鈕事件的兩種方式

寫一個powershell的簡單GUI做本地任務&#xff0c;試驗出2個方法&#xff1a; 方法1&#xff1a; function btn1_click {write-host $text1.Text -ForegroundColor Green -BackgroundColor Black }$btn1.Add_Click({btn1_click})方法2&#xff1a; $btn2_click {write-host $…

C++語言的并查集

并查集&#xff08;Union-Find&#xff09;在C中的實現與應用 引言 并查集&#xff08;Union-Find&#xff09;&#xff0c;又稱為不相交集合&#xff08;Disjoint Set&#xff09;&#xff0c;是一種用于處理動態連通性問題的數據結構。它的主要功能包括合并兩個集合&#x…

基于大模型的病態竇房結綜合征預測及治療方案研究報告

目錄 一、引言 1.1 研究背景與目的 1.2 研究意義 二、病態竇房結綜合征概述 2.1 定義與病因 2.2 臨床表現與分型 2.3 診斷方法 三、大模型在病態竇房結綜合征預測中的應用 3.1 大模型介紹 3.2 數據收集與預處理 3.3 模型訓練與優化 四、術前預測與準備 4.1 風險預…

2026考研數學張宇武忠祥復習視頻課,高數基礎班+講義PDF

2026考研數學武忠祥老師課&#xff08;網盤&#xff09;&#xff1a;點擊下方鏈接 2026考研數學武忠祥網課&#xff08;最新網盤&#xff09; 一、基礎階段&#xff08;3-5個月&#xff09; 目標&#xff1a;搭建知識框架掌握基礎題型 教材使用&#xff1a; 高數&#xff1a;…

linux命令二

1.將windows文件上傳到linux 將文件傳到光驅里&#xff0c;再將光驅進行掛載&#xff0c;mount 2.linux安裝的文件存儲 普通執行 程序 bin 配置文件 /etc 日志文件 /var/log 3.rpm 主查詢 命令&#xff1a;rpm -q 包名 查詢已安裝的軟件包 通過軟件 -qa 查詢所有已安裝的軟件包…