2012-03-11 110 views
0

我創建了一個我自己的類,它具有雙數據類型X和Y的公共屬性,當其中一個被更改時我想要一個事件觸發它將用於更新視覺對象的位置,如畫布或者其他的東西。我一直在網上尋找答案,我並不真正瞭解如何正確地做到這一點。我是編程新手,我看到有人提到INotifyPropertyChanged,但我不知道如何使用它或在哪裏放置東西。如何在屬性更改時創建自定義事件?

我想要一個事件,當X或Y得到改變,我可以附加一個方法..請幫助

回答

0

內,您的視圖模型類,在你的X和Y屬性你可以調用的制定者發生的更新方法:

public double X 
    { 
     get 
     { 
      return x; 
     } 
     set 
     { 
      if (value != x) 
      { 
       x= value; 
       OnPropertyChanged("X"); 
       VisualObjectUpdateMethod(); 
      } 
     } 
    } 
    private double x; 

更新任何想要更新的邏輯然後將位於VisualObjectUpdateMethod中。

0

如果任何你想要做的是同一類的一部分,你可以只使用setter方法:

public class Something 
{ 
    private string _Message; 
    public string Message 
    { 
     get { return _Message; 
     set 
     { 
      if (_Message != value) 
      { 
       _Message = value; 
       CallSomeMethod(); 
      } 
     } 
    } 

    public void CallSomeMethod() 
    { 
     Debug.WriteLine("Message is now: " + Message); 
    } 
} 
+0

它是不一樣的類的一部分,這就是爲什麼我需要一個觸發事件,我可以用它來觸發另一個類 – Windsurfer25 2012-03-11 03:41:05

+0

變化@ Windsurfer25可能要使用此則:HTTP://計算器。 COM /問題/ 6644247 /簡單的自定義事件-C-銳 – John 2012-03-11 05:07:39

0

你需要學習Delegates and Events

MSDN也有一個example這是相當多的東西你在問:

從相同的頁面這是相關的部分;

public void Update(double d) 
    { 
     radius = d; 
     area = 3.14 * radius * radius; 
     OnShapeChanged(new ShapeEventArgs(area)); 
    } 
    protected override void OnShapeChanged(ShapeEventArgs e) 
    { 
     // Do any circle-specific processing here. 

     // Call the base class event invocation method. 
     base.OnShapeChanged(e); 
    }