После удаления выбранного элемента из списка, привязка не меняется - PullRequest
0 голосов
/ 25 декабря 2018

Я пишу приложение xamarin forms, и у меня проблема с привязкой SelectedItem из ListView.Все хорошо, пока SelectedItem не удалит из ObservableCollection.После этой операции SelectedItem все еще содержит предыдущее значение, но оно должно быть равно null.

Почему это не работает и как его исправить.

    <ListView ItemsSource="{Binding Clients}" SelectionMode="Single" SelectedItem="{Binding SelectedSocket}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding HostEntry.HostName}" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

public ObservableCollection<TcpSocket> Clients { get; set; } = new ObservableCollection<TcpSocket>();
private TcpSocket _SelectedSocket { get; set; }
public TcpSocket SelectedSocket
{
    get => _SelectedSocket;
    set
    {
        _SelectedSocket = value;
        PropertyChanged(this, new PropertyChangedEventArgs(nameof(SelectedSocket)));
    }
}

И после нажатиякнопка что-то вроде этого:

Clients.Remove(SelectedSocket);

1 Ответ

0 голосов
/ 26 декабря 2018

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

//...

public void OnClick(object sender, EventArgs e) {
    Clients.Remove(SelectedSocket); //raises collection changed
    SelectedSocket = null; //raises property changed
}

//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...