Get notified when static property changes in wpf

后端 未结 2 1044
天命终不由人
天命终不由人 2020-12-22 00:54

Here microsoft described that in wpf 4.5 we can use INotifypropertyChanged for static properties as well. So I tried to do that.

Here is the code:

pu         


        
相关标签:
2条回答
  • 2020-12-22 01:28

    Think that you added this to your viewmodel :

      yourClass.StaticPropertyChanged+= yourClassStaticPropertyChanged;
    

    ...

      void yourClassStaticPropertyChanged(object sender, DependencyPropertyChangedEventArgs e)
            {
    
            }
    

    The "this" keyword refers the "object sender" parameter. If you use "this" in your code while creating handler, it refers "sender" in yourClassStaticPropertyChanged function. If you send null, the sender parameter will be null.

    --Edit--

    If you want to get changes to the textbox add this code to your viewmodel :

    private string _updatedText;
    public string UpdatedText
    {
      get
      {
          return _updatedText;
      }
      set
      {
          _updatedText= value;
          OnStaticPropertyChanged("UpdatedText")
      }
    }
    

    And set UpdatedText in the event :

    void yourClassStaticPropertyChanged(object sender, DependencyPropertyChangedEventArgs e)
            {
                    UpdatedText=e.NewValue;
            }
    

    then bind the UpdatedText to your textbox like this :

    <TextBlock Text="{Binding UpdatedText}"/>
    
    0 讨论(0)
  • 2020-12-22 01:50

    Unless anything uses the sender parameter, it won't matter. Logically it would make sense to use the type:

    handler(typeof(TypeDeclaringEvent), new PropertyChangedEventArgs(PropertyName));
    

    EDIT: Note that in the document you referred to, it states:

    The static event can use either of the following signatures.

       public static event EventHandler MyPropertyChanged;
       public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
    

    Your event doesn't comply with these, which could be an issue.

    0 讨论(0)
提交回复
热议问题