WPF: XAML property declarations not being set via Setters?
我有一个WPF应用程序,在其中我要通过XAML声明设置的代码隐藏中使用依赖项属性。
例如
1 | <l:SelectControl StateType="A" Text="Hello"/> |
因此,在此示例中,我有一个名为
为了帮助说明问题,我在示例中放置了另一个名为
代码隐藏摘录...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(String), typeof(SelectControl)); public String Text { get { return (String)GetValue(TextProperty); } set { SetValue(TextProperty, value); } } public static readonly DependencyProperty StateTypeProperty = DependencyProperty.Register("StateType", typeof(String), typeof(SelectControl)); public String StateType { get { return (String)GetValue(StateTypeProperty) } set { switch (value) { case"A": AnotherPropertyBoolean = true; break; case"B": AnotherPropertyBoolean = false; break; default: // this is only an example... } } } |
现在,如果我在设置器上设置了一个断点(对于
但是为
有人知道发生了什么吗?
依赖项属性的" CLR包装器"仅在通过代码完成后才被调用。 XAML取决于在DependencyProperty.Register(...)调用中指定的名称。 因此,不要像上面那样为您的依赖项属性"扩展"设置程序的逻辑,只需将自定义逻辑放在PropertyChangedCallback函数中即可。