silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.net – 在WPF和Silverlight中的静态属性上实现了INotifyProperty大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

问题是如何在静态属性上实现INotifyPropertyChanged,因为您实现的事件不是静态的,并且不能由静态属性调用.此外,您无法绑定到Silverlight中的静态属性. 我已经看到这个问题在一些论坛中出现了各种各样的解决方案,其中没有一个非常令人满意. 嗯,我想我已经找到了一个优雅的解决方案,但它很简单,我觉得我必须遗漏一些东西. 答案是,编写一个访问静态变量的非静态属性,如下所示: p
@H_404_1@
问题是如何在静态属性上实现INotifyPropertyChanged,因为您实现的事件不是静态的,并且不能由静态属性调用.此外,您无法绑定到Silverlight中的静态属性.

我已经看到这个问题在一些论坛中出现了各种各样的解决方案,其中没有一个非常令人满意.

嗯,我想我已经找到了一个优雅的解决方案,但它很简单,我觉得我必须遗漏一些东西.

答案是,编写一个访问静态变量的非静态属性,如下所示:

private static double length;
    public double Length
    {
        get
        {
            return length;
        }
        set
        {
            length = value;
            NotifyPropertyChanged("Length");
        }
    }

我已经测试了它,似乎工作得很好.我错过了什么吗?

解决方法

从技术上讲,您仍然没有绑定到静态属性 – 您绑定到类的实例,该实例使用静态字段作为后备存储.这在某种程度上会起作用,但……

这有一个根本问题 – 如果你有多个项目绑定到同一个后备存储(这似乎是你正在尝试的东西,因为你有意使它静态),INotifyPropertyChanged通知会发生在实例上你目前在哪里受到约束.

比如说,你有两个并排坐着的UserControl,它们都绑定到包含这段代码viewmodel.当控件A设置此属性时,控件B将永远不会收到通知(因为它是运行的A的INotifyPropertyChanged),因此它将显示为不同步.

如果你真的想尝试做这样的事情,你可能最好让你的后备存储使用一个实现INotifyPropertyChanged的类,并通过你的viewmodel类“冒泡”属性.这样,将正确通知多个实例,并且您可以处理可能在必要时发生的任何多线程/同步问题.

或者,您可能需虑在Singleton内部使用单个实例属性(带有实例字段).这也会为您提供“静态”属性的共享通知.

大佬总结

以上是大佬教程为你收集整理的.net – 在WPF和Silverlight中的静态属性上实现了INotifyProperty全部内容,希望文章能够帮你解决.net – 在WPF和Silverlight中的静态属性上实现了INotifyProperty所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。