仅在绑定输入处更改焦点后设置属性

时间:2014-11-20 12:07:08

标签: c# wpf xaml mvvm

在我的xaml中,我有一个文本框,绑定到我的viewmodel中的属性:

XAML:

<TextBox HorizontalAlignment="Left" Height="30" Margin="10,10,0,0" TextWrapping="Wrap" Text="{Binding City}" VerticalAlignment="Top" Width="191" Grid.Column="1" Grid.Row="6"/>

查看型号:

public class MyViewModel : INotifyPropertyChanged
{
    ...
    public string City
    {
        get { return _model.Address.City; }
        set
        {
            if (_model.Address.City != value)
            {
                _model.Address.City = value;
                RaisePropertyChanged("City");
            }
        }
    }
    ...
}

双向数据绑定效果很好,但似乎只有在焦点从城市输入更改为另一个对象时才设置属性值。

我想在按下热键(ENTER)时保存我的上下文。当我现在进入城市并在之后按ENTER时,该属性不包含新值。当我进入城市时,将焦点更改为另一个对象并按ENTER键,该属性包含正确的值。

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

使用UpdateTrigger并将其设置为PropertyChanged

<TextBox HorizontalAlignment="Left" Height="30" Margin="10,10,0,0" TextWrapping="Wrap" Text="{Binding Country, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" VerticalAlignment="Top" Width="191" Grid.Column="1" Grid.Row="6"/>