1. 依賴項屬性 簡單理解

来源:https://www.cnblogs.com/wsnanxixi/archive/2018/01/03/8183449.html
-Advertisement-
Play Games

依賴項屬性 簡單理解 2018/1/3 15:36:07 dependency property 的簡單理解(略去大部頭理解) 依賴項屬性 依賴項屬性的值不是簡單的封裝欄位,而是根據其他的輸入值來決定本屬性的值。為什麼要這樣做?因為在WPF體系中,只有定義屬性為依賴項屬性,這個屬性才支持樣式設置,數 ...


依賴項屬性 簡單理解

2018/1/3 15:36:07




dependency property 的簡單理解(略去大部頭理解)

依賴項屬性

依賴項屬性的值不是簡單的封裝欄位,而是根據其他的輸入值來決定本屬性的值。為什麼要這樣做?因為在WPF體系中,只有定義屬性為依賴項屬性,這個屬性才支持樣式設置,數據綁定,繼承,動畫和預設值。
兩個關鍵行為:更改通知和動態值識別。
簡言之,依賴屬性就是一種可以自己沒有值,並能通過Binding從數據源獲得值(依賴在別人身上)的屬性。擁有依賴屬性的對象被稱為“依賴對象”。

wpf使用依賴項屬性的方式

當屬性發生變化時,依賴項屬性不會自動引發事件以通知屬性值發生了變化。會觸發受保護名為OnPropertyChangedCallback()的方法。該方法通過兩個wpf服務(數據綁定和觸發器)傳遞信息,並調用PropertyChangedCallback回調函數(如果已經定義了此函數)。
即:當屬性發生變化時,如果希望進行響應,則有兩種選擇:1.使用屬性值創建綁定 2.編寫能夠自動改變其他屬性或開始動畫的觸發器。
(省略了大部頭細節)

附加屬性

附加屬性(Attached Properties)就是說,一個屬性本來不屬於某個對象,但由於某種需求而被後來附加上。例如:Button控制項本身沒有Grid.Row屬性,但是將Button放在Grid佈局裡面,就可以用這個屬性來設置Button的位置。類似的,放在Canvas裡面,可以附加屬性Canvas.Top;放在DockPanel里,可以使用DockPanel.Dock。

<Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Button Background="Black" Grid.Column="1" Grid.Row="1"/>
</Grid>

附加屬性也可以使用Binding依賴在其他對象的數據上。例如:用兩個slider控制矩形在Canvas中的橫縱坐標。

<Canvas>
    <Slider x:Name="sliderX" Canvas.Top="10" Canvas.Left="10" Width="260" Minimum="50" Maximum="200"/>
    <Slider x:Name="sliderY" Canvas.Top="40" Canvas.Left="10" Width="260" Minimum="50" Maximum="200"/>
    <Rectangle x:Name="rect" Fill="Blue" Width="30" Height="30" Canvas.Left="{Binding ElementName=sliderX,Path=Value}" Canvas.Top="{Binding ElementName=sliderY,Path=Value}"/>
</Canvas>

結果如圖:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背水一戰 Windows 10 之 用戶和賬號: 數據賬號的添加和管, OAuth 2.0 驗證 ...
  • 使用方法: 給委托賦值的幾種方式 //調用委托的方法 noreturn.Invoke() 上面展示的是委托的基本定義於使用方法,在mvc中基本摒棄了這種寫法,轉而使用封裝好的泛型委托來使用 使用方法: 下麵寫幾個簡單的demo演示一下 下麵來調用這個方法,看一下委托的具體使用方法 上面就是一個簡單但 ...
  • “工具善其事,必先利其器!裝好這些插件讓vs更上一層樓” ReSharper : 首先的是Resharper,這個基本是目前是我開發過程中必備的工具集,唯一的缺點就是吃記憶體,所以你的記憶體要是低於8G,就不要使用它了。它的特點可以快速重構、高亮顯示錯誤、導航和搜索都很方便、智能提示、智能複製這個我特別 ...
  • 在第一篇博客里提過圖片識別的底層.最精準的圖片識別需要海量的數據磨煉.自己寫的底層沒有以億為單位的數據支持其實也是個殘廢品. 在此介紹Microsoft的幾個雲服務吧.都是付費的喔.個人可以申請30天免費試用. public class FaceHelper { private const stri ...
  • <system.webServer><httpProtocol><customHeaders><add name="Access-Control-Allow-Origin" value="*"/><add name="Access-Control-Allow-Methods" value="GET, ...
  • 做項目遇到這個問題: 未能載入文件或程式集“MySql.Data, Version=6.8.7.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d”或它的某一個依賴項。找到的程式集清單定義與程式集引用不匹配。 (異常來自 HRESULT:0x8013 ...
  • 事件——路由事件 2018/1/3 16:32:35 事件路由允許源自某個元素的事件由另一個元素引發。 wpf把直接消息模型升級為可傳遞的消息模型。Wpf的UI是由佈局組件和控制項構成的樹形結構,激發事件時,程式員可以選擇以傳統的直接事件模式讓響應者來響應,也可以讓這個事件在UI組件樹沿著一定方向傳遞 ...
  • 某次需要使用C#對註冊表進行操作,不過卻發現沒有許可權,研究了以下發現是當前系統用戶的問題。除非當前系統用戶是Administrator,否則就會給你拋出一個異常。後來在網上發現了一個方法,原來C#也可以獲取用戶的系統管理員許可權的,雖然需要用戶進行確認。 這裡我對Oracle軟體的一個鍵進行了操作,想 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...