#.net #silverlight #user-interface
#.net #silverlight #пользовательский интерфейс
Вопрос:
У меня есть приложение для текстового чата, разработанное в Silverlight. Приложение каждые 2 секунды запрашивает у сервера входящие данные, и именно тогда я устанавливаю положение моей полосы прокрутки на последнее сообщение.
В положении полосы прокрутки есть что-то подозрительное, чего я не могу понять. Я разместил приложение здесь, http://bit.ly/h2yopt
Не могли бы вы, пожалуйста, помочь мне определить положение прокрутки.
PS: Пожалуйста, попробуйте ввести сообщение, а затем переместите полосу прокрутки.
Спасибо.
Комментарии:
1. Хорошо, можете ли вы указать, какое поведение вы хотите от полосы прокрутки, потому что теперь происходит то, что даже при прокрутке вверх положение прокрутки перемещается вниз каждый раз, когда вы проводите опрос сервера. Это «подозрительное» поведение, на которое вы ссылаетесь? Если это так, то это выбор относительно того, хотите ли вы такого поведения или хотите другого поведения.
2. Я бы посоветовал избегать автоматической прокрутки, если позиция прокрутки еще не находится внизу.
3. @Johannes, да, это подозрительное поведение. Я хочу, чтобы позиция прокрутки по умолчанию была внизу, и пользователь должен иметь возможность прокручивать ее вверх и вниз или в любом другом случае. Теперь положение прокрутки по умолчанию в SL — up.
4. Я бы поместил все свои сообщения в ObservableCollection и наблюдал за изменениями, как только были добавлены новые элементы (с сервера, пользователем или откуда угодно), вы прокручиваете вниз.
5. @Vitalij это групповой чат, поэтому почти каждые 2 секунды я получаю много сообщений, так что в конечном итоге мне пришлось бы каждые 2 секунды переводить его в нижнее положение. Это делает невозможным просмотр более ранних сообщений другими пользователями. Я хочу что-то вроде GTalk, окно чата и полоса прокрутки не связаны друг с другом, но по умолчанию полоса прокрутки расположена вниз.
Ответ №1:
Выглядит так, как будто полоса прокрутки перемещается вниз каждые 2 секунды. Покажите нам код.
Комментарии:
1. да, он перемещается вниз каждые 2 секунды, когда я опрашиваю сервер. Какую часть кода вы хотели бы видеть?
2. Вы только что подтвердили эффект, который я вижу. Поэтому мне не нужно видеть какой-либо код. Просто определите желаемый эффект и закодируйте его. Вы могли бы добавить некоторый код, который прокручивается только вниз, когда положение прокрутки полностью опущено.
3. Я хочу, чтобы положение прокрутки вело себя так, как происходит прокрутка в GTalk. Пользователь должен иметь возможность прокручивать его вверх / вниз, но его положение по умолчанию должно быть вниз.
4. Это то, что делают мои предложения. При синхронизации с сервером сначала проверьте, полностью ли отображается текущая позиция. Затем загрузите новые сообщения. Если положение прокрутки было полностью вниз, прокрутите вниз, если нет, не прокручивайте вообще.
Ответ №2:
У меня есть приложение для текстового чата, разработанное в Silverlight. Приложение каждые 2 секунды запрашивает у сервера входящие данные, и именно тогда я устанавливаю положение моей полосы прокрутки на последнее сообщение.
Тогда не настраивайте прокрутку каждый раз при опросе, настраивайте ее только тогда, когда вам нужно поставить лайк, возможно, когда вы сами вводите сообщение или когда угодно. Кроме того, список ограничен данными? Я думаю, у вас было бы больше контроля, если бы вы использовали этот уровень управления.
Надеюсь, это поможет.