【发布时间】:2020-04-06 23:43:57
【问题描述】:
我是 Xamarin 的新手。我有一个列表视图,它绑定到一个 ObservableCollection,数据来自 sqlite。
列表视图有两个标签。当有人单击工具栏菜单按钮时,我想隐藏其中一个标签(lblGroup)。此代码无效。
代码如下:
<StackLayout>
<ListView x:Name="lstItems" HasUnevenRows="True" ItemSelected="lstItems_ItemSelected" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout VerticalOptions="StartAndExpand" Padding="20, 5, 20, 5" Spacing="3">
<Label x:Name="lblItemName" IsVisible="{Binding IsNameVisible}" Text="{Binding ItemName}" ></Label>
<Label x:Name="lblGroup" IsVisible="{Binding IsGroupVisible}" Text="{Binding ItemGroup}" ></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
在 xaml.cs 文件中,我将 ObservableCollection 绑定到我的列表视图。
public ObservableCollection<Items> itemsObs;
public ItemDetails()
{
InitializeComponent();
LoadItems();
}
private async LoadItems()
{
List<Items> items = _con.QueryAsync<Items>(Queries.ItemsById(ItemsId));
itemsObs = new ObservableCollection<Items>(items);
lstItems.ItemsSource = itemsObs ;
}
private void menu_Clicked(object sender, EventArgs e)
{
itemsObs.ToList().ForEach(a => a.IsGroupVisible = false);
}
【问题讨论】:
-
Items是否实现了 INotifyPropertyChanged?当您的 ItemsSource 为itemsObs时,您为什么要修改versesObs? -
versesObs 粘贴错误。将其更新为 itemsObs
-
@GurmeetKhalsa 请看看我的回复,现在解决了你的问题吗?
标签: listview xamarin observablecollection