Windows phone 7 在MVVM灯下立即更新属性?

Windows phone 7 在MVVM灯下立即更新属性?,windows-phone-7,mvvm,mvvm-light,Windows Phone 7,Mvvm,Mvvm Light,我的视图模型中有一个属性 public const string WelcomeTitlePropertyName = "WelcomeTitle"; private string _welcomeTitle = string.Empty; /// <summary> /// Gets the WelcomeTitle property. /// Changes to that property's value raise the Property

我的视图模型中有一个属性

public const string WelcomeTitlePropertyName = "WelcomeTitle";

    private string _welcomeTitle = string.Empty;

    /// <summary>
    /// Gets the WelcomeTitle property.
    /// Changes to that property's value raise the PropertyChanged event. 
    /// </summary>
    public string WelcomeTitle
    {
        get
        {
            return _welcomeTitle;
        }

        set
        {
            RaisePropertyChanging(WelcomeTitlePropertyName);
            _welcomeTitle = value;
            RaisePropertyChanged(WelcomeTitlePropertyName);
        }
    }
public常量字符串WelcomeTitlePropertyName=“WelcomeTitle”;
私有字符串_welcomeTitle=string.Empty;
/// 
///获取WelcomeTitle属性。
///更改该属性的值将引发PropertyChanged事件。
/// 
公共字符串WelcomeTitle
{
得到
{
返回welcomeTitle;
}
设置
{
RaisePropertyChange(WelcomeTitlePropertyName);
_welcomeTitle=价值;
RaisePropertyChanged(WelcomeTitlePropertyName);
}
}
这是连接到一个文本框,并具有双向绑定

现在我有一个KeyDown事件,需要获取“WelcomeTitle”属性的当前长度

公共ICommand自动完成
{
得到
{
返回新的RelayCommand(e=>
{
变量长度=WelcomeTitle.length;
});
}
}
是的,我发现WelcomeTitle属性在用户离开文本框之前不会得到更新。这对我不起作用,因为我需要知道长度(以及稍后WelcomeTitle中的当前值)和键控


我怎样才能避开这件事?在codebehind中这是没有问题的。

在WPF中,通过在绑定中设置
UpdateSourceTrigger=“PropertyChanged”
可以轻松实现;不幸的是,这在Windows Phone中是不可能的,因此您需要一个解决方法。中介绍了一些选项。

hmm我将这些选项中的代码粘贴到哪里?在keypress down中?在TextBox的TextChanged事件中,代码隐藏中的一个事件处理程序(无论如何,您无法从ViewModel访问TextBox)似乎可以工作,但我必须将事件更改为KeyUp而不是KeyDown,因为它在KeyDown中仍然不起作用。@chobo2,您应该处理TextChanged事件,而不是KeyUp或KeyDown
  public ICommand AutoComplete
        {
            get
            {
               return new RelayCommand<KeyEventArgs>(e =>
                {
                    var length = WelcomeTitle.Length;
               });
            }
        }