Во время изучения MVVM я создал DataTemplate
для одной из моих моделей представлений:
<DataTemplate DataType="{x:Type task:NodeDefinitionVM}">
<Ellipse Width="4" Height="4" Fill="Red" >
<Ellipse.RenderTransform>
<TranslateTransform X="{Binding Location.X, Mode=TwoWay}"
Y="{Binding Location.Y, Mode=TwoWay}" />
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
Упрощенный вид модели класса:
class NodeDefinitionVM : (...)
{
public Point Location
{
get { return model.Location; }
set { model.Location = value; }
}
(...)
}
В моем случае модель реализует INotifyPropertyChanged, потому что мне нужно, чтобы все изменения в модели отражались в View (уведомление Mode=TwoWay
в XAML).
Проблема: Установлены начальные значения смещений преобразования (X, Y), и я получаю уведомления при изменении свойства Location . Однако нет уведомления о том, что .X изменился, и, поскольку я привязан к Location.X, преобразование не обновляется (за исключением первого раза), поскольку оно ожидает Location.X уведомление об изменении. Тип Point
- это легкий struct .
Вопрос: Возможно ли привязать к .X при обновлении привязки всякий раз, когда изменяется любое из свойств вдоль Location.X цепочки? Есть ли общее решение для «более длинной цепи» типа Binding prop1.prop2.prop3
?