我有一个文本框通过TwoWay绑定绑定到我的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));
}
答案 0 :(得分:2)
所以基本上你问TextBox(它的目的是做“请输入你的名字”)来处理300KB的文本,现在你看到了一些滞后。嗯...您是否尝试过创建一个包含单个TextBox的空Silverlight应用程序,将该数量的文本直接分配给其Text属性,然后开始编辑。你还看到滞后吗?如果是这样,那么听起来你正在推动文本框能力的极限。
我不知道一个严肃的选择,也许第三方可能有所帮助。 RichTextBox
可能不会遇到同样的问题,因为它明确地设计用于那种文本编辑。然而,它不容易绑定和处理Xaml的奇怪方言而不是直接文本。