WPF 控制動畫開關

記錄一種實現方式:

第一步:

首先定義一個靜態類,提供依賴屬性,進而方便在xaml中實現綁定:

 public static class AnimationBehavior{// 定義附加屬性public static readonly DependencyProperty IsAnimatingProperty =DependencyProperty.RegisterAttached("IsAnimating",typeof(bool),typeof(AnimationBehavior),new PropertyMetadata(false, OnIsAnimatingChanged));public static bool GetIsAnimating(DependencyObject obj) =>(bool)obj.GetValue(IsAnimatingProperty);public static void SetIsAnimating(DependencyObject obj, bool value) =>obj.SetValue(IsAnimatingProperty, value);private static void OnIsAnimatingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e){if (d is FrameworkElement element){// 通過 VisualTreeHelper 查找模板中的 Storyboardif (element.FindResource("ShadowAnimation") is Storyboard storyboard){if ((bool)e.NewValue)storyboard.Begin(element, true); // 啟動動畫elsestoryboard.Stop(element);      // 停止動畫}}}}

其中實現了依賴屬性IsAnimating。

第二步:

在前端中定義動畫:

 <Page.Resources><!--  將 Storyboard 定義在全局資源中  --><Storyboard x:Key="ShadowAnimation"><DoubleAnimationAutoReverse="True"RepeatBehavior="Forever"Storyboard.TargetName="ShadowEffect"Storyboard.TargetProperty="Opacity"From="0.0"To="1"Duration="0:0:3" /><DoubleAnimationAutoReverse="True"RepeatBehavior="Forever"Storyboard.TargetName="myBorder"Storyboard.TargetProperty="Opacity"From="0.3"To="1"Duration="0:0:3" /><!--<ThicknessAnimationAutoReverse="True"RepeatBehavior="Forever"Storyboard.TargetName="myBorder"Storyboard.TargetProperty="Margin"From="15"To="12"Duration="0:0:1.5" />--></Storyboard></Page.Resources>

其中每一個DoubleAnimation定義中的TargetName是當前界面的其他對象名稱:

<Borderx:Name="myBorder"Grid.ColumnSpan="1"Margin="4"localVM:AnimationBehavior.IsAnimating="{Binding CurrentActionHandle.ExecutionState, Converter={StaticResource SingleFlowExecutionStateToBoolJustRunnimg}}"Background="{Binding CurrentActionHandle.ExecutionState, Converter={StaticResource SingleFlowExecutionStateToBrushColor}}"CornerRadius="10"><Border.Effect><DropShadowEffectx:Name="ShadowEffect"BlurRadius="10"Direction="12"Opacity="80"ShadowDepth="0"Color="{Binding CurrentActionHandle.ExecutionState, Converter={StaticResource SingleFlowExecutionStateToColor}}" /></Border.Effect></Border>

比如myBorder 和 ShadowEffect;?

第三步:

創建綁定關系:

比如上方代碼中:

localVM:AnimationBehavior.IsAnimating="{Binding CurrentActionHandle.ExecutionState, Converter={StaticResource SingleFlowExecutionStateToBoolJustRunnimg}}"

給新手解釋一下,其中localVM是自己定義的命名空間:

?

可我這里使用了轉換器,可以理解為就是把執行動畫的開關綁定到了我后端ViewModel的屬性上。

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

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

相關文章

元素豎向的百分比設定是相對于父容器的高度嗎?

元素豎向的百分比設定是相對于父容器的高度嗎&#xff1f; 核心問題 在CSS中&#xff0c;當設置元素的豎向屬性&#xff08;如height、padding-top等&#xff09;為百分比值時&#xff0c;其計算基準是父容器的高度還是寬度&#xff1f; 權威結論height屬性 百分比值基于父容器…

web3.0怎么入局

Web3.0(第三代互聯網)融合了區塊鏈、去中心化應用(DApps)、NFT、DAO等新興技術,給個人和機構提供了許多全新的賺錢機會。入局 Web3.0 賺錢主要有以下幾種途徑,根據你的技術背景、資金能力和時間投入可以選擇適合自己的方式。 目錄 一、普通用戶賺錢方式(門檻低) 1. …

linux入門 相關linux系統操作命令(二)--文件管理系統 ubuntu22.04

以下有免費的4090云主機提供ubuntu22.04系統的其他入門實踐操作 地址&#xff1a;星宇科技 | GPU服務器 高性能云主機 云服務器-登錄 相關兌換碼星宇社區---4090算力卡免費體驗、共享開發社區-CSDN博客 兌換碼要是過期了&#xff0c;可以私信我獲取最新兌換碼&#xff01;&a…

Python-初學openCV——圖像預處理(二)

目錄 一、圖像仿射變換 1、基本性質 二、cv2.warpAffine() 函數 1、圖像旋轉 2、圖像平移 3、圖像縮放 4、圖像剪切 三、 插值方法 1、最近鄰插值 2、雙線性插值 3、像素區域插值 4、雙三次插值 5、Lanczos插值 一、圖像仿射變換 仿射變換&#xff08;Affine Tr…

醫療AI輕量化部署方案的深度梳理與優化路徑判研

摘要 醫療AI的快速發展為精準診斷、個性化治療和醫療資源優化提供了新機遇。然而,大規模模型的高計算復雜度和資源需求限制了其在資源受限環境(如邊緣設備、基層醫療機構)的應用。本文系統梳理了醫療AI輕量化部署的核心技術體系,包括模型壓縮、參數高效微調(PEFT)、邊緣-…

SSP通過SDK對接流量的原理與實現

一、核心概念解析 1.1 SSP&#xff08;供應方平臺&#xff09; 定義&#xff1a;SSP是程序化廣告生態中媒體方的核心工具&#xff0c;通過自動化技術幫助媒體&#xff08;如網站、應用、視頻平臺&#xff09;管理廣告資源、優化填充率并最大化廣告收益。核心功能&#xff1a;…

如何清理電腦c盤內存 詳細操作步驟

電腦使用時間不斷延長&#xff0c;許多用戶可能會遇到一個問題——C盤空間不足&#xff0c;導致系統運行緩慢或無法安裝新程序。如果C盤的存儲空間被大量占用&#xff0c;可能會影響到計算機的性能。本文將介紹幾種有效的方法&#xff0c;幫助你清理C盤內存&#xff0c;釋放空間…

ESP32的ADF詳解:5. Streams的API

一、算法流 (algorithm stream) 1. 初始化與配置API功能描述關鍵參數說明algo_stream_init()初始化算法流&#xff08;AEC/AGC/NS/VAD&#xff09;config->algo_mask 選擇算法組合config->sample_rate 設置采樣率&#xff08;默認16kHz&#xff09;config->partition_…

JavaScript對象鍵序問題解析

問題的發現&#xff1a; 我有一個接口返回一個json數據瀏覽器network里的Response里是從大到小排。 但Preview就是反過來的 問題的描述&#xff1a; 上面那個讓我發現瀏覽器處理對象或者json是會對其鍵值對做排序&#xff01;&#xff01;&#xff01; 在JavaScript中&am…

pandas庫的數據導入導出,缺失值,重復值處理和數據篩選,matplotlib庫 簡單圖繪制

目錄 一.數據導入導出 1.CSV文件讀取與參數說明 2.Excel與TST文件讀取 3.數據導出操作 二.缺失值處理 1.填充缺失值 2.刪除缺失值【刪除整行數據】 三.重復值處理 四.數據篩選與條件查詢 1.邏輯判斷取數 2.字符匹配 3.邏輯運算&#xff1a; &&#xff08;和&…

FPGA?如何實現另一個?FPGA?

如果你對 FPGA 有些了解&#xff0c;大概知道它的意思是“可編程邏輯器件”&#xff0c;可以把寫好的邏輯電路&#xff08;通常是 Verilog/VHDL&#xff09;通過工具綜合、布局布線、燒寫進去&#xff0c;讓一塊芯片變成“你想要的電路”。但如果我告訴你&#xff0c;現在有個開…

文思助手、新華妙筆 AI材料星的公文寫作深度測評

公文寫作一直都是體制內工作人員的日常核心任務&#xff0c;寫公文的難點不僅來自于對政策表述嚴謹性的高要求&#xff0c;也在于格式規范、內容深度以及效率壓力的多重考驗。隨著AI技術的發展&#xff0c;越來越多的文字輔助工具出現&#xff0c;很大程度的緩解了寫作壓力&…

Flutter開發環境搭建與工具鏈

Flutter開發實戰第1章&#xff1a;Flutter開發環境搭建與工具鏈1.1 Flutter簡介與優勢Flutter是Google推出的開源UI工具包&#xff0c;用于從單一代碼庫構建編譯為原生性能的移動、Web和桌面應用程序。Flutter的核心優勢包括&#xff1a;跨平臺一致性&#xff1a;一套代碼運行在…

io_uring:Linux異步I/O的革命性突破

目錄 1. io_uring是什么&#xff1f; io_uring核心優勢&#xff1a; 2. io_uring核心原理 2.1 雙環形緩沖區設計 2.2 關鍵數據結構 1、完成隊列CQ 2、提交隊列SQ 3、Params 3. io_uring工作流程 3.1 初始化階段 3.2 I/O操作流程 4. C代碼示例&#xff08;原始系統調…

線段樹學習筆記 - 練習題(2)

文章目錄1. 前言2. P3870 [TJOI2009] 開關3. P2184 貪婪大陸4. P1438 無聊的數列5. P1471 方差1. 前言 線段樹系列文章&#xff1a; 線段樹學習筆記。線段樹學習筆記 - 練習題&#xff08;1&#xff09;。 前一篇做了幾道線段樹的題目&#xff0c;這篇文章就繼續看下線段樹的…

Vue狀態管理:Pinia 與 Vuex 的使用方法與對比【文章附有完整案例】

最近在接手vue項目的需求&#xff0c;因為之前一直在做react的需求&#xff0c;日常的vue練習也少了很多&#xff0c;導致現在接手vue項目&#xff0c;很多關于vue的知識點基本上忘得干干凈凈了。但是好在有基礎&#xff0c;重新學也會很快掌握。分享這個過程中的一些復習內容。…

OpenMed 項目深度分析:推動醫療 NLP 領域的開源革命

摘要 醫療人工智能(AI)領域因高質量數據和模型的獲取受限而發展緩慢。OpenMed 項目通過開源超過380個醫療命名實體識別(NER)模型,顯著降低了研究與應用門檻。本文從項目背景、技術優勢、應用場景、實施挑戰及未來展望五個方面,系統分析 OpenMed 的核心價值與潛力,揭示其…

大模型開發

什么是Ai&#xff1f;AI的全拼是(Artificial Intelligence)人工智能&#xff0c;使機器能夠像人類一樣思考、學習和解決問題的技術。在AI的應用情況下我們更多的是學習自然語言處理。在自然語言處理(Natural Language Processing&#xff0c;NLP)中&#xff0c;有一項關鍵技術叫…

【正常配置了beast擴展,phpinfo信息也顯示了,但是就是不運行】

正常配置了beast擴展&#xff0c;phpinfo信息也顯示了&#xff0c;但是就是不運行場景原因解決排查過程擴展場景 項目中使用到了beast進行源碼保護&#xff0c;指定類存在&#xff0c;但是報錯信息提示類找不到&#xff0c;beast擴展添加到了正在運行的php版本下的ext文件夾下…

CRMEB 單商戶PRO多商戶通用去版權教程

CRMEB去版權教程&#xff0c;此教程可根據具體版本進行調整&#xff0c;基本適用次方法。 后端版權修改 修改后端管理底部版權及門店后端管理底部版權。 文件位置 \view\admin\src\components\copyright\index.vue 文件位置 \view\admin\src\router\routes.js 文件位置 \vi…