Mode = TwoWay绑定如何提交更新?

时间:2015-06-25 20:42:20

标签: c# wpf mvvm data-binding

文本框绑定到ViewModel,如果其内容已更新,ViewModel会将更新提交给源(通常为db)。

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 个答案:

答案 0 :(得分:1)

我不会选择在属性设置器中进行数据库操作,更好地使用命令,例如访问后台代码LostFocus事件处理程序中的ViewModel并执行它或在XAML中使用EventTrigger。

<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>