. NET 4.5 XAML绑定到静态属性的更新,工作,但有没有更好的方法

本文关键字:更新 工作 有没有 方法 更好 属性 XAML 绑定 静态 NET | 更新日期: 2023-09-27 18:10:06

很抱歉,如果它是重复的,但我找不到类似的问题。

从stackoverflow其他问题(这个网站是一流的)我发现如何绑定XAML项目与事件更新静态类。它是这样工作的:

XAML:

 <Label x:Name="label_cc_CPUPOWER" Content="{Binding Path=(database:Database.CPU_CPUPOWER)}"...
代码:

    public static class Database
{
    #region Event firing
    public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
    private static void NotifyStaticPropertyChanged(string propertyName)
    {
        if (StaticPropertyChanged != null)
            StaticPropertyChanged(null, new PropertyChangedEventArgs(propertyName));
    }
    #endregion

    //CPU
    private static string _CPU_CPUCLOCK;
    public static string CPU_CPUCLOCK
    {
        get { return _CPU_CPUCLOCK; }
        set
        {
            if (value != _CPU_CPUCLOCK)
            {
                _CPU_CPUCLOCK = value;
                NotifyStaticPropertyChanged("CPU_CPUCLOCK");
            }
        }
    }
    private static string _CPU_CPUPOWER;
    public static string CPU_CPUPOWER
    {
        get { return _CPU_CPUPOWER; }
        set
        {
            if (value != _CPU_CPUPOWER)
            {
                _CPU_CPUPOWER = value;
                NotifyStaticPropertyChanged("CPU_CPUPOWER");
            }
        }
    }

它是有效的,我真的很感激你,我不需要自己弄清楚这一切,但我有大约25-50个值来存储。我想知道是否有一种方法可以自动执行,而不是在括号中更改名称的复制/粘贴?

我还考虑为每个对象制作一个列表,如CPU,RAM,只是将EventChanged发送到整个对象,但我试图最大限度地减少CPU使用率,IMHO将PropertyChanged提升到所有对象,而我只想更新五个中的两个,这不是一个好方法,因为整个对象值将被刷新。

. NET 4.5 XAML绑定到静态属性的更新,工作,但有没有更好的方法

有,看看这个:PropertyChanged。Fody

那么你所要做的就是加上:

using PropertyChanged;
...
[ImplementPropertyChanged]
public class MyClass
{
  public object Object {get;set;} 
// INotifyPropertyChanged implemented automatically @ compile-time
}