使用MVVM将TextBox绑定到WPF中的大字符串

时间:2009-08-18 14:57:24

标签: wpf mvvm binding textbox

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

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

查看:

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

视图模型:

    public StringBuilder Output
    {
        get { return _output; }
    }

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

使用MVVM做什么是更好的方法?

2 个答案:

答案 0 :(得分:4)

绕过数据绑定延迟的一种可能方法是使用异步绑定。您可以通过设置绑定对象的IsAsync属性来执行此操作:

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

您还可以使用优先级绑定来显示文本的缩减版本(可以快速加载),同时加载较大的文本项。 msdn - &gt; http://msdn.microsoft.com/en-us/library/ms753174.aspx上描述了优先级绑定。

答案 1 :(得分:0)

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

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