【问题标题】:Textbox lag with a lot of data? (Silverlight 4)文本框滞后大量数据? (银光4)
【发布时间】:2011-09-29 12:27:44
【问题描述】:

我有一个文本框通过 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));
    }

【问题讨论】:

  • 您是否将 UpdateSourceTrigger 更改为 PropertyChanged ?如果是,那么这可能是原因
  • 不。我用 XAML 更新了我的帖子。
  • @hyp:在 Silverlight 中,您只能选择 DefaultExplicit。 TextBox 默认是在焦点离开控件时更新。 Tigel:你可以通过删除 TwoWay 来确定绑定是否是问题的一部分,看看会发生什么,但我怀疑它会改变什么。
  • @AnthonyWJones 是的,我刚刚尝试使用 OneWay 绑定,但它仍然滞后:(
  • 你能更精确地量化事物吗?在您发现可见滞后的测试中究竟有多少行和多少个字符?

标签: c# silverlight user-interface silverlight-4.0


【解决方案1】:

因此,基本上您要求 TextBox(旨在执行“请输入您的名字”之类的操作)处理 300KB 的文本,现在您看到了一些滞后。嗯...您是否尝试过创建一个包含单个 TextBox 的空 Silverlight 应用程序,将该数量的文本直接分配给它的 Text 属性,然后开始编辑。你还看到滞后吗?如果是这样,那么听起来您正在推动文本框的能力极限。

我不知道一个严肃的替代方案,也许第三方可能会有所帮助。 RichTextBox 可能不会遇到同样的问题,因为它显然是为这种文本编辑而设计的。然而,它并不容易绑定和处理一种奇怪的 Xaml 方言而不是直接文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多