2010-04-02 64 views
3

我在我的附加属性SetXXX和GetXXX静态方法上设置了断点。在Xaml中,我已将值分配给附加属性。不过,我期待Set或Get静态方法被调用,但它们不是。附加的属性按预期工作,如果我在代码中调用SetXXX和GetXXX方法,那么它的工作是预期的。为什么在XAML中不调用附加属性Set和Get静态方法?

为什么从Xaml设置时不调用这些方法? JDD。

JD。

回答

3

As JaredPar explained,当您使用XAML时,GetXXX/SetXXX方法不会被调用。

我想补充一点,虽然:

如果您需要跟踪代码更改附加属性,你应该使用的元数据。您可以在元数据中设置一个callback,以在属性更改时触发,并在您的代码中进行跟踪。

+1

@Reed。参考第1点,我删除了GetXXX和SetXXX方法,并且我得到一个XAMLParserException,表示XML名称空间中不存在Attached属性。所以看起来他们必须存在? – 2010-04-02 20:23:12

+0

@JD:你说得对 - 他们需要在那里让房产系统在设计师身上工作。这里提到:http://msdn.microsoft.com/en-us/library/ms749011.aspx#custom我编辑删除。但是,元数据回调是跟踪属性更改的正确方法,因为XAML(和通常的绑定系统)永远不会调用Set/Get方法。 – 2010-04-02 20:26:33

+0

谢谢,你的解释广告JaredPar后似乎有意义。 – 2010-04-02 20:37:34

5

当涉及到附加属性时,XAML不理解普通属性getter和setter。相反,它会直接转到DependencyObject上的较低级别的API。即GetValueSetValue方法。

相关问题