Binding лини и квадрата

389
10 августа 2017, 21:10

Имеется канва на которой я могу рисовать квадраты, а их соединять линиями. Также я могу выделять эти квадраты и перетаскивать как захочу, и соответственно линии также перетягиваются за квадратами. Всё было хорошо, пока я использовал класс Line.

Как можно связать через Binding один из концов Polyline и центр квадрата? У квадрата есть свойства зависимости X и Y и просто свойство CenterPoint. До этого были связаны квадрат и просто линия - Line. Код был таким:

public void BindingLineXY2(ref MyLine line)
    {
        Binding bindLX2 = new Binding();
        bindLX2.Source = this;
        bindLX2.Path = new PropertyPath("X");
        bindLX2.Mode = BindingMode.TwoWay;
        line.MakedLine.SetBinding(Line.X2Property, bindLX2);
        Binding bindLY2 = new Binding();
        bindLY2.Source = this;
        bindLY2.Path = new PropertyPath("Y");
        bindLY2.Mode = BindingMode.TwoWay;
        line.MakedLine.SetBinding(Line.Y2Property, bindLY2);
    }

Таким же образом X1 и Y1 биндились.

Решил модернизировать до Polyline и столкнулся с трудностями.

Answer 1

У класса Polyline есть свойство зависимости PointsProperty. Это коллекция точек, к которой ты и можешь привязаться. Положи в неё с нужного тебе края центральную точку квадрата и наслаждайся. Квадрат, соответственно, тоже может быть привязан к точке из этой коллекции. Напрямую, думаю, будет не очень красиво и довольно грязно. Так что лучше через ViewModel с INotifyPropertyChanged.

READ ALSO
Переполнение типа данных в тесте Ферма на простоту

Переполнение типа данных в тесте Ферма на простоту

Добрый деньРеализовал вероятностный алгоритм определение простоты числа на основе малой теоремы Ферма

377
Сохранение и загрузка в файл List<T>Serialize Deserialize

Сохранение и загрузка в файл List<T>Serialize Deserialize

Хочу сохранять при закрытии формы данные в файл и потом загружатьПри сохранении все сохраняется, а при открытии не загружается

412
Как установить индекс текущей строки в datagridview?

Как установить индекс текущей строки в datagridview?

Программно выделяю строку в гриде:

626
Как получить доступ к страницам navigationPage NavigationFrame

Как получить доступ к страницам navigationPage NavigationFrame

Используется Visual Studio 2015; Devexpress 171

357