Я бы сначала начал с изменения названий ваших классов.Пространства имен обычно решают любые конфликты, но точка WPF, определяемая в System.Windows, скорее всего, вызовет проблемы при попытке создать свою точку в классе окна WPF, что, как я предполагаю, является тем, где находится код получателя.расположен.Причина, по которой я говорю это, заключается в том, что по умолчанию вы получаете «using System.Windows;»Вверху автоматически сгенерированных оконных классов создается VS.
Поскольку все происходит от объекта, вы также захотите переопределить функцию bool Equals (объект o), так как это поможет вам пойматьпроблема, при которой он сравнивается с System.Windows.Point вместо вашей точки.
Я думаю, что если вы измените имя вашего класса на IntPoint, вы можете обнаружить, что «новая точка» в вашем коде получения может неполучить рефакторинг для «нового IntPoint», поскольку он может быть преобразован в System.Windows.Point.
То же самое касается использования Grid в качестве имени.Я стараюсь придерживаться соглашения об использовании имен типов, которые не совпадают с именами типов .NET, чтобы избежать нечетных конфликтов.
Итак, чтобы подвести итог, измените свой класс на следующее:
class IntPoint {
public int X { get; set; }
public int Y { get; set; }
public IntPoint(int X, int Y) {
this.X = X;
this.Y = Y;
}
public override bool Equals(object obj)
{
if (obj is IntPoint) return Equals(obj as IntPoint);
return base.Equals(obj);
}
public bool Equals(IntPoint anotherPoint) {
return ((anotherPoint.X == X) && (anotherPoint.Y == Y));
}
}
Я также изменил ваши открытые поля на открытые свойства, используя сокращенный стандартный синтаксис get / set.Я не буду вдаваться в подробности свойств по сравнению с полями, но было бы хорошо, если бы вы искали в Интернете свойства .net по сравнению с открытыми полями.Часть рассуждений связана с тем, как работает Binding..Net позволяет вам связывать со свойствами, но если вы попытались связать одно из полей, я думаю, что он не сможет их найти.
Отправьте сообщение обратно, если вы внесете эти изменения, и оно все еще не работает.