listview - Xamarin Forms ListView ObservableCollection 未更新

标签 listview xamarin.forms observablecollection

我有一个 ListView绑定(bind)到 ObservableCollectionviewModels 组成.

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>

想要的结果 :当用户输入条目时(绑定(bind)到 Id ),应该启用该按钮。

实际结果 :当用户输入条目时,什么也没有发生(我猜是因为 ObservableCollection 没有看到 viewmodel 中的变化)

注意:当我在 ObservableCollection 中添加/删除元素时, View 确实会更新(如预期的那样)。

非常感谢任何建议/想法!

最佳答案

您需要执行 INotifyPropertyChanged在 View 模型类上。
ObservableCollection<T>类仅处理有关集合本身是否已更改的通知 - 添加/删除/等项目。它不处理单个项目本身的属性何时更改的通知。

关于listview - Xamarin Forms ListView ObservableCollection 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618209/

相关文章:

android - ListView 去不同的 Activity

listview - TListview FMX onclick 事件以及 Toggle Design

.net - .NET ObservableCollection<> ToList() 线程安全吗?如果没有,如何进行

android - 单击事件的适配器 View 返回不正确的位置

android - 如何以编程方式查看 android listView 快速滚动拇指?

java - 当我在 Xamarin 中构建解决方案时,我看到错误 : “javac.exe” exited with code 3

c# - Xamarin 表单更改导航栏的背景颜色

xamarin.forms - Xamarin Forms在详细信息页面中隐藏TabbedPage但保留后退按钮

c# - LINQ 查询 Observable 集合

vb.net - 在 VB.Net 中序列化 ObservableCollection(of T)