Xamarin表单ListView ObservableCollection未更新

Xamarin表单ListView ObservableCollection未更新,listview,xamarin.forms,observablecollection,Listview,Xamarin.forms,Observablecollection,我有一个列表视图,它绑定到由视图模型组成的可观察集合 viewModel如下所示: public string Id{ get; set; } public string Name{ get; set; } public bool HasId { get { return !(String.IsNullOrEmpty(Id)); } } 在前端xaml中: <ListView x:Name="MyList" ItemsSource="{Binding MyList}">

我有一个
列表视图
,它绑定到由
视图模型
组成的
可观察集合

viewModel如下所示:

public string Id{ get; set; }
public string Name{ get; set; }
public bool HasId
{
    get { return !(String.IsNullOrEmpty(Id)); }
}
在前端xaml中:

<ListView x:Name="MyList" ItemsSource="{Binding MyList}">
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <StackLayout>
          <Label Text="{Binding Name" FontSize="Small"/>
          <StackLayout Spacing="20">
            <Entry Text="{Binding Id}"/>
            <Button Text="Create Profile" IsEnabled="False">
              <Button.Triggers>
                <DataTrigger TargetType="Button" Binding="{Binding HasId}" Value="True">
                  <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
              </Button.Triggers>
            </Button>
          </StackLayout>
        </StackLayout>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

所需结果:当用户键入条目(绑定到
Id
)时,应启用该按钮

实际结果:当用户输入条目时,什么都不会发生(我猜是因为
可观察集合
视图模型
中看不到更改)

注意:在
ObservableCollection
中添加/删除元素时,视图会更新(如预期的那样)


非常感谢您的任何建议/想法

条目有一个名为OnTextChanged的事件名称(类似于此,您可以使用它来启用按钮,这可以在Xaml或代码隐藏中完成)


关于未刷新的listView,您是否尝试再次设置“MyList”ObservableCollection?这会触发视图模型的OnPropertyChanged事件?

您需要在viewmodel类上实现
INotifyPropertyChanged


ObservableCollection
类仅处理有关集合本身是否已更改的通知-添加/删除的项/等。它不处理单个项本身的属性更改时的通知。

您的ViewModel类需要实现INotifyPropertyChanged@Jason谢谢!我没有忘记我第一次阅读文档时就理解了它,但现在它有了意义。