Tag: XAML

  • WPF-好用的Dependency Property And Callback相依性屬性

    WPF-好用的Dependency Property And Callback相依性屬性

    WPF之所以後續越來越多人使用,就是因為它的Dependency Property And Callback,甚至拉動Flex Windows的時候也不會讓圖片與元Dpi跑掉,以前的經驗表示… 在A端IDE跑得好好的外觀屬性,換到B端時…外觀屬性跑掉是家常便飯,一時之間會不知道是內層還是外部的設定屬性造成的(這個就會與WPF-Dependency Property有很大的關係)。

    以前的NetFramework 沒有Dpi適應以及元件外觀沒有相依性可以跟著整個Solutioni走,所以開發WPF(Windows Presentation Foundation)的大神也肯定有察覺到這個超級不方便的地方。

    今天我們就是要講這其中的一個重要元素 – Dependency Property。

    資料來源:

    https://skychang.github.io/2011/12/15/WPF-Dependency-Property-%E6%B7%B1%E5%85%A5%E6%8E%A2%E8%A8%8E/

    表單資料架構

    以前的 Property寫法

    你如果使用這種動態的方式,還得去定義FontChangedEvent 再去RaiseEvent … 真的很痛苦!

    WPF不需要這樣子搞了!


    在Visual Studio中添加Dependency Property

    在Visual Studio中的Dependency Class中加入一個靜態Dependency Property。

    DependencyProperty只能被封裝在繼承DependencyObject的物件中,幾乎在WPF或是Silverlight中看得到的控制項都繼承了DependencyObject,這跟我們之前用的 CLR屬性相差非常地多。


    Dependency Property Callback 示範

    當我們必須操控Form 裡面的原件屬性,需按照我們定義的方式做變化時,我們可以在Dependency Property 註冊的地方新增一個…

    內部可以多載實體 PropertyMetadata ( Boolean,PropertyChangedCallBack, CoreceValueCallBack)

    *可以想像它是被包裹在Dependency Property裡面的實體物件

    Boolean

    預先設定布林值

    PropertyChangedCallBack

    可改變實體元件的屬性值

    CoreceValueCallBack

    讀取目前元件底下的屬性值

    建立靜態DependencyProperty

    Dependency Property 宣告與新增其CLR屬性

    當你建立完了MLStackPanel Class之後,我們會將這個Property加到我們的自訂控制項中(MainForm的XAML碼),讓我們更容易理解。

    我們需要一個偵測背景顏色的副程式


    WPF頁面

    該專案目的:

    我們得把專案挪用到任何VS的環境,它都能幫助我且準確的保留上一個開發者的外觀樣式。

    設定控制項內部的 裝飾屬性

    XAML

    當你一開啟表單頁面時

    當你一開啟表單頁面,試驗你新增的CheckBox

  • WPF-CustomClass 客製Class


    新增Class

    右鍵點擊 “Add” -> “Class”

    範例Class

    範例來源: Advanced Windows Presentation Foundation (WPF) Course

    頁面 WPF- Form

    看到這個東西,會讓我想到HTML

    可以把樣式在按鈕上設定基本屬性Attribute

    然後把Button 當作一個Property 1

    範例使用 XAML 建立按鈕:

    https://learn.microsoft.com/zh-tw/dotnet/desktop/wpf/controls/walkthrough-create-a-button-by-using-xaml?view=netframeworkdesktop-4.8

    WPF-畫面示範