WPF Binding к нескольким источникам данных
От: LittleBill  
Дата: 14.12.11 16:16
Оценка:
Есть три одинаковых контрола расположенных горизонтально и по порядку внутри четвертого (линейки), которые могут перемещаться внутри него.
выглядит это примерно так:
[1]_[2]_[3]
Задача стоит в том чтобы ограничить область перемещения каждого из трех контролов положениями остальных. Т.е. самый левый контрол [1] не сможет двигаться в право дальше левого края ближайшего правого контрола [2], самый правый контрол [3] не может двигаться левее чем правый край ближайшего левого контрола [2], ну а перемещения среднего [2] ограничены ближайшим левым [1] и правым [2].

Первое что пришло в голову, это решить данный вопрос с помощью DataBinding-а. Т.е. у каждого контрола есть свойства Left и Right которые определяют текущую координату относительно левого и правого краев контрола отночительно левого и правого краев линейки (принцип как у Canvas) но помимо них есть ещё и свойство-зависимость MinLeft которое, при добавлении каждого нового контрола в линейку связываются правой точкой ближайшего левого контрола, и свойство-зависимость MaxRight которое связывается с левой точкой ближайшего правого контрола... В свою очередь сами свойства Left и Right становятся связанными с свойствами MaxRight ближайшего левого и MinLeft ближайшего правого контролов соответственно.

В общем у меня два:
1. Можно ли в WPF указать для каждого свойства свой DataContext а не общий контекст для всего контрола?
2. Может быть у кого-то есть более изящная идея по решению вышеописанной задачи?
wpf binding usercontrol
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.