В настоящее время я выполняю некоторое масштабирование данных в преобразователе значений всякий раз, когда панель перерисовывается. Я хочу переместить часть этой обработки в модель представления, так как большая часть обработки происходит только в том случае, если изменяется размер элемента управления или несколько других свойств.
Чтобы масштабированные данные выглядели приемлемо, мне нужен ActualWidth
контейнера в модели представления. Я хочу привязать его к свойству модели представления одним способом, чтобы при его изменении я мог запустить обработку масштабирования.
Все примеры, которые я мог найти, привязывают CLR или свойство зависимости к элементу, а не наоборот, и мне явно чего-то не хватает в моем понимании, чтобы понять, как я должен это сделать. Я пробовал несколько разных вещей, настраивающих привязку, но я просто не понимаю это правильно.
Любые подсказки? Спасибо.
В MyView XAML:
<myItemsControl/>
В коде MyView позади что-то вроде:
Binding b = new Binding(MyWidthProperty);
b.Mode = BindingMode.OneWay;
b.Source = myItemsControl.Name;
.........?
а также
public static readonly DependencyProperty MyWidthProperty =
DependencyProperty.Register( "MyWidth", typeof(Double), typeof(MyViewModel));
В MyViewModel:
public Double MyWidth{
get { return _myWidth; }
set { _myWidth = value; ViewChanged(this); } }