C# 文本框数据绑定Silverlight 5在文本框中的键入速度非常慢

C# 文本框数据绑定Silverlight 5在文本框中的键入速度非常慢,c#,silverlight,data-binding,textbox,onkeyup,C#,Silverlight,Data Binding,Textbox,Onkeyup,如果您在文本框上有一个带有UpdateSourceTrigger.PropertyChanged的绑定,每当文本框上的textproperty发生更改并且您在该属性上有一个RaisedPropertyChanged时,该绑定都会更新您的数据源,那么如果您的文本框中有大量文本(超过1000个字符),那么您的文本框会变得非常慢(在键入某些文本期间)。有人能解决这个问题吗?我需要将数据模型的更改通知GUI。我使用MVVM模式。我已经尝试将我的内容属性转换为依赖对象->相同的文本框。这个问题让我困惑,因

如果您在文本框上有一个带有UpdateSourceTrigger.PropertyChanged的绑定,每当文本框上的textproperty发生更改并且您在该属性上有一个RaisedPropertyChanged时,该绑定都会更新您的数据源,那么如果您的文本框中有大量文本(超过1000个字符),那么您的文本框会变得非常慢(在键入某些文本期间)。有人能解决这个问题吗?我需要将数据模型的更改通知GUI。我使用MVVM模式。我已经尝试将我的内容属性转换为依赖对象->相同的文本框。这个问题让我困惑,因为这应该是基本的silverlight内容

干杯 托拜厄斯

var绑定=新绑定(“内容”);
binding.Mode=BindingMode.TwoWay;
binding.UpdateSourceTrigger=UpdateSourceTrigger.PropertyChanged;
myTextBox.SetBinding(TextBox.TextProperty,binding);
私有字符串m_内容;
公共字符串内容
{
获取{return m_content;}
设置
{
m_含量=值;
//RaisePropertyChanged(“内容”);
}
}
公共事件属性更改事件处理程序属性更改;
/// 
///引发此对象的PropertyChanged事件。
/// 
///具有新值的属性。
受保护的void RaisePropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(处理程序!=null)
{
var e=新的PropertyChangedEventArgs(propertyName);
处理者(本,e);
}
}

尝试将文本框的UpdateSourceTrigger属性设置为LostFocus,以便在键入时不会更新基础数据源

var binding = new Binding("Content");
binding.Mode = BindingMode.TwoWay;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
myTextBox.SetBinding(TextBox.TextProperty, binding);


private string m_content;
        public string Content
        {
            get { return m_content; }
            set
            {
                m_content = value;
                //RaisePropertyChanged("Content");
            }
        }


    public event PropertyChangedEventHandler PropertyChanged;

    /// <summary>
    /// Raises this object's PropertyChanged event.
    /// </summary>
    /// <param name="propertyName">The property that has a new value.</param>
    protected void RaisePropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            var e = new PropertyChangedEventArgs(propertyName);
            handler(this, e);
        }
    }