設計器觸發的屬性更改檢測
在運行時設置 IsClosed 屬性的值時,會按預期調用 OnIsClosedChanged() 方法。但是,當設計者在 XAML 中設置該屬性時,該方法仍保持未調用狀態。這是因為在 XAML 或其他非運行時上下文中設置的依賴屬性會繞過 setter 方法。
要解決此問題,您可以使用屬性元數據註冊 PropertyChangedCallback。此回調允許您指定在屬性值更改時執行的自定義行為。
public static readonly DependencyProperty IsClosedProperty = DependencyProperty.Register( "IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender, (o, e) => ((GroupBox)o).OnIsClosedChanged()));
此代碼創建一個名為 IsClosedProperty 的新依賴項屬性,並註冊一個執行 OnIsClosedChanged() 方法的屬性元數據回調當屬性值改變時。通過此更改,運行時和 XAML 屬性更新都將觸發所需的行為,確保您的 UI 做出適當響應。
以上是為什麼在 XAML 中設定我的依賴屬性的 Setter 時不觸發?的詳細內容。更多資訊請關注PHP中文網其他相關文章!