【问题标题】:Why attached property Set and Get static methods are not called in XAML?为什么在 XAML 中不调用附加属性 Set 和 Get 静态方法?
【发布时间】:2010-04-03 04:25:27
【问题描述】:

我在附加属性 SetXXX 和 GetXXX 静态方法上设置了断点。在 Xaml 中,我已将值分配给附加属性。但是,我期望调用 Set 或 Get 静态方法,但事实并非如此。附加属性按预期工作,如果我在代码中调用 SetXXX 和 GetXXX 方法,那么它会按预期工作。

为什么从 Xaml 设置的方法没有被调用?

法学博士

【问题讨论】:

    标签: .net wpf


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      不过,我想补充一点:

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

      【讨论】:

      • @Reed。参考第 1 点,我删除了 GetXXX 和 SetXXX 方法,我得到一个 XAMLParserException,说明 XML 命名空间中不存在 Attached 属性。所以看来它们必须存在?
      • @JD:你是对的——他们需要在那里才能让属性系统在设计师中工作。这里提到了这一点:msdn.microsoft.com/en-us/library/ms749011.aspx#custom 我编辑删除了它。但是,元数据回调是跟踪属性更改的正确方法,因为 XAML(以及一般的绑定系统)永远不会调用 Set/Get 方法。
      • 谢谢,在你的解释广告 JaredPar 之后似乎有道理。
      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2019-05-09
      • 2011-04-14
      相关资源
      最近更新 更多