Задержка текстового поля с большим количеством данных? (Silverlight 4)

#c# #silverlight #user-interface #silverlight-4.0

#c# #silverlight #пользовательский интерфейс #silverlight-4.0

Вопрос:

У меня есть текстовое поле, привязанное к строке в моей ViewModel с помощью привязки TwoWay, которая часто содержит сотни строк, если не больше. Когда текстовое поле содержит много текста, задержка ввода может стать очевидной при вводе текста.

Итак, сейчас я пытаюсь отследить источник этого снижения производительности, и мне интересно, может ли это быть ограничением самого элемента управления.

Есть какие-нибудь мысли?

Спасибо!

Редактировать:

В моих тестах у меня есть 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));
    }
  

Комментарии:

1. Вы изменили UpdateSourceTrigger на PropertyChanged? Если да, то это может быть причиной

2. Нет. Я обновил свой пост с помощью XAML.

3. @hyp: в silverlight вы можете выбрать только Default или Explicit . Текстовое поле по умолчанию обновляется, когда фокус покидает элемент управления. Тигель: вы могли бы определить, является ли привязка частью проблемы, удалив TwoWay, просто чтобы посмотреть, что произойдет, но я сомневаюсь, что это что-то изменит.

4. @AnthonyWJones Да, я только что попробовал с односторонней привязкой, но она все еще отстает: (

5. Можете ли вы более точно определить количество данных. В тесте, где вы обнаруживаете визуальную задержку, сколько именно строк и сколько символов?

Ответ №1:

Итак, по сути, вы просите текстовое поле (которое предназначено для выполнения таких действий, как «Пожалуйста, введите свое имя») обработать текст объемом 300 КБ, и теперь вы видите некоторое отставание. Хммм… Вы пробовали создать пустое приложение Silverlight, содержащее одно текстовое поле, присвоить это количество текста непосредственно его текстовому свойству, а затем начать редактирование. Вы все еще видите задержку? Если это так, то похоже, что вы расширяете возможности текстового поля.

Я не знаю серьезной альтернативы, возможно, что-то стороннее может помочь. Возможно, что у него RichTextBox может не возникнуть той же проблемы, поскольку он явно предназначен для такого рода редактирования текста. Однако его нелегко привязать и обрабатывать странный диалект Xaml, а не прямой текст.