Tag: DependencyProperty

  • WPF-Data Binding-Two Way資料繫結 雙向

    不管您的Data Binding繫結元素是什麼,也不論資料來源的本質,每個繫結一定會遵循下圖所說明的模型。

    我們可以把Data Binding 說成資料在元件間互相溝通的橋樑,所以必須要指定Source 發送第 以及你要傳到的目的地-目標(Target)。

    參考資料:

    https://www.cnblogs.com/lzhp/archive/2012/09/11/2673810.html

    元件間雙向傳遞

    表單外觀

    示範兩個TextBox 透過改變內部Text 的方式,來做雙向資料傳遞

    XAML

    我們的範例,主要TextBox1 跟 TextBox2 兩者會互相丟資料。

    UpdateSourceTrigger預設值 =Default

    UpdateSource 這一個屬性是需透過原生元件內部事件改變了屬性,之後來去做傳送。

    利用下列屬性

    Text=”{ Binding ElementName=txtFName, Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged

  • 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