【发布时间】:2018-12-25 19:07:44
【问题描述】:
我正在编写 xamarin 表单应用程序,但从 ListView 绑定 SelectedItem 时遇到问题。一切都很好,直到 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);
【问题讨论】:
-
然后手动设置为空
-
但我不知道为什么它不单独改变
-
你能提供一些你的代码吗?绑定xaml和ViewModel selectedItem属性,怎么去掉?
-
您必须至少共享显示绑定的 XAML 或代码以及绑定的代码源。
-
好的 ...我现在认为您正在从可观察集合中删除 SelectedItem ,但它不会引发 SelectedItem 属性更改,因此您应该在删除 SelectedItem 时做来自 ObservableCollection,手动提升它。