如何解决CollectionView 中的 Xamarin 更新数据不起作用
我的页面中有一个 CollectionView 和一个与类绑定的标签名称
λ> :kind Whatever
Whatever :: * -> *
λ> :kind Something
Something :: Constraint -> *
<CollectionView Grid.Column="0"
Grid.Row="1"
SelectionMode="Single"
ItemsSource="{Binding MarketplacePackages}">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Name}" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
一个列表视图
public class MarketplacePackage
{
public string Name { get; set; }
}
用于初始化列表的构造函数
List<MarketplacePackage> marketplacePackages;
public List<MarketplacePackage> MarketplacePackages
{
get { return marketplacePackages; }
set { SetProperty(ref marketplacePackages,value); }
}
当我调用 onClickMethod 时,我尝试更改 listView 中的数据
public Marketplaceviewmodel()
{
Catalogue = new Command(onCatalogueClicked);
MyDevice = new Command(onMyDeviceClicked);
MyOrders = new Command(onMyOrderdsClicked);
MarketplacePackages = new List<MarketplacePackage>() {
new MarketplacePackage()
{
Name = catalogueList[0],},new MarketplacePackage()
{
Name = catalogueList[1]
},new MarketplacePackage()
{
Name = catalogueList[2]
},new MarketplacePackage()
{
Name = catalogueList[3]
}
};
//this works!
//MarketplacePackages[0].Name = "String";
}
解决方法
您的 MarketplacePackage
类必须实现 INotifyPropertyChanged
接口(或者如果您使用 XamarinCommunityToolkit 或 MvvmHelpers,则从 ObservableObject
继承)并在 Name
属性为改变了。
例如:
public class MarketplacePackage : ObservableObject
{
string name;
public string Name { get => name; set => SetProperty(ref name,value); }
}
当您在 ViewModel 的构造函数中设置/更改 Name
属性时它会起作用,因为 View 在构造函数完成后读取初始值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。