【问题标题】:Bind TextBox to large string in WPF using MVVM使用 MVVM 将 TextBox 绑定到 WPF 中的大字符串
【发布时间】:2010-11-20 15:13:31
【问题描述】:

我在将大字符串绑定到 WPF 中的 TextBox 时遇到性能问题。

在视图中,我将 TextBox 的 Text 属性绑定到视图模型的 Output 属性,该属性是 StringBuilder。

查看:

<TextBox Text="{Binding Output, Mode=OneWay}" IsReadOnly="True"/>

视图模型:

    public StringBuilder Output
    {
        get { return _output; }
    }

随着 StringBuilder 中的文本变大,绑定的性能会下降。

使用 MVVM 执行此操作的更好方法是什么?

【问题讨论】:

  • 字符串有多大?如果将Output 改为输入string 并返回_output.ToString() 而不是直接返回_output 有什么区别吗?

标签: wpf mvvm binding textbox


【解决方案1】:

解决数据绑定延迟的一种可能方法是使用异步绑定。您可以通过设置绑定对象的 IsAsync 属性来做到这一点:

这当然不会解决绑定需要很长时间的问题,但会阻止 UI 在绑定时冻结。

您还可以在加载较大的文本项时使用优先绑定来显示文本的缩减版本(加载速度很快)。优先级绑定在msdn->http://msdn.microsoft.com/en-us/library/ms753174.aspx有描述。

【讨论】:

    【解决方案2】:

    我真的无法想象为什么绑定的性能会很慢,因为它只是显示 StringBuilder 中的内容。但是,我首先想到的是如何添加到 StringBuilder。在 StringBuilder 中添加、删除、替换或插入字符可能会给您带来性能问题。

    我真的不知道您正在构建什么样的字符串或要求是什么,但您可能需要使用不同的结构。

    【讨论】:

      猜你喜欢
      • 2014-08-02
      • 2017-11-14
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多