首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

WPF TemplateBinding 常見陷阱:自訂水印控制屬性綁定失效解析

     編輯:關於ASP.NET

在撰寫自訂 WPF 控制項(如帶水印的密碼框)時,TemplateBinding 若使用不當會導致屬性值無法正確傳遞至範本內部元素。本文以一個水印密碼框案例說明問題成因與解決之道。

問題現象

  1. 預設狀態正常顯示水印文字。
  2. 使用者輸入四個 'a' 後,水印消失,輸入框顯示 ●●●●。
  3. 點擊按鈕讀取綁定屬性 PassText,卻得到預設值而非使用者輸入值。

根本原因

TemplateBinding 屬於單向綁定,且僅在控制項實例化時從父控制項取值一次。若依賴屬性(如 PassText)在範本內部元素(如 PasswordBox)上透過 TemplateBinding 綁定,內部元素的值變更**不會**回寫至父控制項的依賴屬性。

解決方案

改用 {Binding RelativeSource={RelativeSource TemplatedParent}, Path=PassText, Mode=TwoWay},明確指定雙向綁定與來源,確保值能雙向流動。

關鍵差異:

  • TemplateBinding = 單向、一次性、效能較好但功能受限。
  • Binding ... Mode=TwoWay = 雙向、即時同步、適用於需回寫的情境。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved