- Mastering Windows Presentation Foundation
- Sheridan Yuen
- 226字
- 2021-06-24 16:49:04
Catching changing Dependency Property values
As we saw at the beginning of this chapter, the WPF Framework won't call the CLR property wrappers of our Dependency Properties when the property values are changing. However, there is a way to accomplish this using callback handlers. In fact, we've already seen an example of this when we were looking at the creation of the OnEnterKeyDown Attached Property. Let's remind ourselves what that looked like:
public static DependencyProperty OnEnterKeyDownProperty = DependencyProperty.RegisterAttached("OnEnterKeyDown",
typeof(ICommand), typeof(TextBoxProperties),
new PropertyMetadata(OnOnEnterKeyDownChanged));
...
public static void OnOnEnterKeyDownChanged(
DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e) { TextBox textBox = (TextBox)dependencyObject; if (e.OldValue == null && e.NewValue != null) textBox.PreviewKeyDown += TextBox_OnEnterKeyDown; else if (e.OldValue != null && e.NewValue == null) textBox.PreviewKeyDown -= TextBox_OnEnterKeyDown; }
For this Attached Property, we used a particular overload of the DependencyProperty.RegisterAttached method that accepts a PropertyMetadata object, which enabled us to assign a PropertyChangedCallback handler to the property. Note that there is an identical overload for the DependencyProperty.Register method for declaring Dependency Properties.
Program execution will enter these PropertyChangedCallback handlers each time their related Dependency Property changes, so that makes them perfect for debugging their values. While we don't often need to attach these handlers, it only takes a moment to add one when we need to and they enable us to find out what's going on with the Dependency Property values at runtime.
- Facebook Application Development with Graph API Cookbook
- JIRA 7 Administration Cookbook(Second Edition)
- Web Development with Django Cookbook
- C語言程序設計
- Python金融數據分析
- Building Android UIs with Custom Views
- Machine Learning in Java
- Java Web從入門到精通(第2版)
- ASP.NET求職寶典
- SEO教程:搜索引擎優化入門與進階(第3版)
- 你真的會寫代碼嗎
- C Primer Plus(第6版)中文版【最新修訂版】
- Docker on Windows
- Visual Basic 開發從入門到精通
- 深度學習:基于Python語言和TensorFlow平臺(視頻講解版)