#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, а не прямой текст.