Я пытаюсь решить эту проблему. В приложении WFP я связываю коллекцию двоичных объектов со свойством ItemSource listBox.
подпись объекта недвижимости:
public BindableCollection<UserInfo> Friends
{
get { return _friends; }
set
{
_friends = value;
NotifyOfPropertyChange(() => Friends);
}
}
Свойство consit класса UserInfo:
- BitmapImage ProfilePhoto {get; set;}
- String Nick {get; set}
- Статус строки {get; set;} // в автономном режиме, в сети, в чате
- String ChatRoom {get; set;} // имя комнаты чата, в которой пользователь общается
Я получаю каждые 10 секунд новые свежие данные как IDictionary => ().
Мне нужно обновить данные в списке. Поэтому я пытаюсь это:
private void RefreshContactsData(IEnumerable<KeyValuePair<string, UserInfo>> freshFriends)
{
//store selected item in listBox
var tempSelectedFriend = SelectedFriend;
//store selecte index in listbox
var tempSelectedIndex = SelectedFriendsIndex;
//Clear property which is binded on listBox ItemSource
Friends.Clear();
foreach (var freshFriend in freshFriends)
{
freshFriend.Value.IsFriend = true;
//Add fresh data
Friends.Add(freshFriend.Value);
}
StayInRoom();
//set
SelectedFriend = tempSelectedFriend;
SelectedFriendsIndex = tempSelectedIndex;
}
Проблемы:
Я сохраняю текущий выбранный элемент в listBox, очищаю список, добавляю новые данные и возвращаю выбранный элемент обратно в список.
Но пользователь видит, что полоса прокрутки перемещается и перемещается назад, а также мигает выбранный элемент.
Как я могу удалить это нежелательное поведение.