在 C# 中将 属性 绑定到另一个 属性
Bind a property to another property in C#
我有一个名为 Grid
的 Class,它由另外两个 类 Circle
和 Line
.
组成
public class Grid
{
public Circle Circle {get; set;}
public Line Line {get; set;}
}
我希望 Line
的几何图形与 Circle
的几何图形保持连接。这意味着当我拖动或移动 Circle
时。我希望以某种方式通知 Line
并根据 Circle
.
的新位置更新其几何形状
当然,我总是可以使用 Circle
和 Line
的更新几何创建一个新的 Grid
,但我不想创建一个新的 Grid
.我只是想以某种方式将 Line
的端点绑定到例如 Circle
的中心。
C# 中的哪些技术允许我执行此操作?代表? inotifypropertychanged?
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
}
}
我有一个名为 Grid
的 Class,它由另外两个 类 Circle
和 Line
.
public class Grid
{
public Circle Circle {get; set;}
public Line Line {get; set;}
}
我希望 Line
的几何图形与 Circle
的几何图形保持连接。这意味着当我拖动或移动 Circle
时。我希望以某种方式通知 Line
并根据 Circle
.
当然,我总是可以使用 Circle
和 Line
的更新几何创建一个新的 Grid
,但我不想创建一个新的 Grid
.我只是想以某种方式将 Line
的端点绑定到例如 Circle
的中心。
C# 中的哪些技术允许我执行此操作?代表? inotifypropertychanged?
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
}
}