Трудно сказать, не увидев больше кода, но я подозреваю, что ваши проблемы связаны со следующим:
Сначала вам нужно будет определить, какие события должны вызывать прокрутку списка.После того как вы определили эти события, подпишитесь на них и вызовите событие ScrollIntoView
в вашем ListBox
из кода.Возможно, это можно сделать только в том случае, если обрабатываются входящие и исходящие сообщения.Пример.
myListBox.ScrollIntoView(Observable.Messages[Observable.Message.Last-1]);
Я не знаю, как структурирован ваш класс Observable
, поэтому вам может потребоваться изменить то, что вы передаете в событии ScrollIntoView
.Ваша цель - передать самое последнее сообщение, добавленное в коллекцию.Кроме того, вам нужно будет указать свой ListBox
, чтобы получить к нему доступ из кода.
Во-вторых, ваше сообщение всегда пустое, поскольку ваш класс Observable
, скорее всего, изменчив.Вы добавляете MsgToSend
в коллекцию, но затем сбрасываете его значение на пустое.Когда вы сбрасываете это значение, вы сбрасываете также и значение, добавленное в коллекцию.Пройдите message
вместо Observable.MsgToSend
.
private void sendbyenter(object sender, KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
string message = Observable.MsgToSend;
try
{
Observable.mychatroom.sendMessage(message);
Observable.Messages.Add(message);
Observable.MsgToSend = "";
}
}