我有一个文本框绑定到一个字符串在我的ViewModel通过双向绑定,通常包含数百行,如果不是更多。当文本框包含大量文本时,输入文本时会出现明显的输入延迟。
所以,我现在试图跟踪这个性能下降的来源,我想知道它是否可能是控件本身的限制。
任何想法吗?
谢谢!
编辑:在我的测试中,当我开始看到明显的延迟时,我有800行,每行211个字符。我添加的文字越多,它就越慢。
下面是一些代码:
<TextBox x:Name="rightTextBox" Text="{Binding Source={StaticResource ViewModel}, Path=Text, Mode=TwoWay}"
AcceptsReturn="True" />
我的文本框被绑定到这个字符串:
private string text;
public string Text
{
get
{
return this.text;
}
set
{
if (this.text != value)
{
this.text= value;
NotifyPropertyChanged("Text");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
所以基本上你要求TextBox(它被设计成做"请输入您的名字"之类的事情)处理300KB的文本,现在你看到一些延迟。嗯…您是否尝试过创建一个包含单个文本框的空Silverlight应用程序,将该数量的文本直接分配给其text属性,然后开始编辑?你还能看到延迟吗?如果是这样的话,那么听起来你正在挑战文本框能力的极限。
我不知道一个严肃的替代品,也许第三方可能会有帮助。RichTextBox
可能不会遇到同样的问题,因为它显然是为这种文本编辑而设计的。然而,它不容易绑定和处理奇怪的Xaml方言,而不是直接的文本。