Есть три одинаковых контрола расположенных горизонтально и по порядку внутри четвертого (линейки), которые могут перемещаться внутри него.
выглядит это примерно так:
[1]_[2]_[3]
Задача стоит в том чтобы ограничить область перемещения каждого из трех контролов положениями остальных. Т.е. самый левый контрол [1] не сможет двигаться в право дальше левого края ближайшего правого контрола [2], самый правый контрол [3] не может двигаться левее чем правый край ближайшего левого контрола [2], ну а перемещения среднего [2] ограничены ближайшим левым [1] и правым [2].
Первое что пришло в голову, это решить данный вопрос с помощью DataBinding-а. Т.е. у каждого контрола есть свойства Left и Right которые определяют текущую координату относительно левого и правого краев контрола отночительно левого и правого краев линейки (принцип как у Canvas) но помимо них есть ещё и свойство-зависимость MinLeft которое, при добавлении каждого нового контрола в линейку связываются правой точкой ближайшего левого контрола, и свойство-зависимость MaxRight которое связывается с левой точкой ближайшего правого контрола... В свою очередь сами свойства Left и Right становятся связанными с свойствами MaxRight ближайшего левого и MinLeft ближайшего правого контролов соответственно.
В общем у меня два:
1. Можно ли в WPF указать для каждого свойства свой DataContext а не общий контекст для всего контрола?
2. Может быть у кого-то есть более изящная идея по решению вышеописанной задачи?