2016-01-19 2 views
0

У меня есть двусторонняя привязка на UIElementRenderTransformProperty. Подключение от ViewModel к View прекрасно работает, и ViewModel может читать обновленное значение от View, но ViewModel не знает, когда изменяется свойство в View. Я знаю, что могу создать свой собственный DependencyProperty и передать значение, но это кажется неправильным. Как я могу уведомить ViewModel при изменении View'sRenderTransformProperty.Уведомить ViewModel, когда изменения RenderTransformProperty View

В Вид:

var renderTransformBinding = new Binding 
{ 
    Path = new PropertyPath("SymbolTransform"), 
    Mode = BindingMode.TwoWay 
}; 
SetBinding(RenderTransformProperty, renderTransformBinding); 

В ViewModel (с использованием MVVM Light):

private Transform _symbolTransform; 
public Transform SymbolTransform 
{ 
    get { return _symbolTransform; } 
    set 
    { 
     if (Set(() => SymbolTransform, ref _symbolTransform, value)) 
     { 
      _isDirty = true; 
     } 
    } 
} 
+0

Transform - это класс, связанный с пользовательским интерфейсом. Я не думаю, что определение класса, связанного с UI в ViewModel, является хорошей идеей. –

+0

Возможно, вы захотите установить [UpdateSourceTrigger] (https://msdn.microsoft.com/en-gb/library/system.windows.data.binding.updatesourcetrigger (v = vs.110) .aspx) на вашу привязку к ' PropertyChanged'. – sthotakura

ответ

0

я ошибся. ViewModel уведомляется об изменении - то есть вызывается сеттер. По какой-то причине _symbolTransform и value равны, поэтому if (Set(() => SymbolTransform, ref _symbolTransform, value)) возвращает false. Не знаю, как _symbolTransform (по-видимому) обновляется до вызова сеттера.