2015-06-25 2 views
0

Текстовое поле привязано к ViewModel, и если его содержимое обновлено, ViewModel отправит обновление источнику (обычно db).Как Mode = привязки TwoWay представляют обновление?

Сторона XAML должна быть такой.

<TextBox Grid.Column="1" Grid.Row="1" 
    Text="{Binding Path=LowVoltage, StringFormat={}{0:N3}, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/> 

Между тем, в ViewModel, это хороший выбор, чтобы сделать обновление, как это?

private float lowVoltage; 
     public float LowVoltage 
     { 
      get { return this.lowVoltage; } 
      set 
      { 
       if (this.lowVoltage != value) 
       { 
        this.lowVoltage = value; 

        **//dbContext.Submit(); --here** 
        this.RaisePropertyChanged("LowVoltage"); 
       } 
      } 
     } 

ответ

1

я не выбрал бы, чтобы сделать операции базы данных внутри собственности сеттера, лучше работать с командами, как доступ ViewModel в позади кода обработчика события LostFocus и выполнить его или использовать EventTrigger в XAML.

<Grid xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="SomeEvent"> 
      <i:InvokeCommandAction Command="{Binding Path=SomeCommand, Mode=OneWay}"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Grid> 
Смежные вопросы