0

我有一个名为Grid的类,它由另外两个类CircleLine组成。将属性绑定到另一个属性C#

public class Grid 
{ 
    public Circle Circle {get; set;} 
    public Line Line {get; set;} 
} 

我想要的Line的几何形状,以保持连接到Circle的几何形状。这意味着当我拖动或移动Circle。我想以某种方式通知Line,并根据Circle的新位置更新其几何图形。

当然,我总是可以用CircleLine的更新几何创建新的Grid,但我不想创建新的Grid。我只是想以某种方式将Line的端点绑定到例如Circle的中心。

C#中的哪些技术允许我这样做?代表? INotifyPropertyChanged的?

+2

您所标记的与你的问题的事实'inotifypropertychanged'意味着你已经知道的回答你的问题。阅读您在悬停标签时获得的鼠标悬停文字。 – Flater

+0

@Flater我不太确定。在这种情况下我不知道如何实现它。 – Vahid

+1

好吧,如果遇到任何问题,请尝试实施并回到我们这里。 StackOverflow不是一个代码写入服务。 [这是一个官方的MSDN示例](https://docs.microsoft.com/zh-cn/dotnet/framework/winforms/how-to-implement-the-inotifypropertychanged-interface)。您也可以使用谷歌查找一步一步的教程。 – Flater

回答

1
public class Circle : INotifyPropertyChanged 
{ 
    private int radius;  
    public int Radius 
    { 
     get { return radius; } 
     set 
     { 
      radius = value; 
      RaisePropertyChanged("Radius"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaisePropertyChanged(string propertyName) 
    { 
     var propChange = PropertyChanged; 
     if (propChange == null) return; 
     propChange(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

然后在Grid.cs

public class Grid 
{ 
    private Circle circle; 
    public Circle Circle 
    { 
     get { return circle; } 
     set 
     { 
      circle = value; 
      if (circle != null) 
       circle.PropertyChanged += OnPropertyChanged; 
     } 
    } 

    private void OnPropertyChanged(object sender, PropertyChangedEventArgs e) 
    { 
     if (e.PropertyName == "Radius") 
      // Do something to Line 
    } 
} 
+0

请注意,这只有在将Circle(或Line)设置为Circle(或Line)的**新实例**时才有效。如果现有的Circle(或Line)的属性发生更改,则不需要。 – Flater

相关问题