我有一个CollectionView
包含一个ImageButton
. 按下图像时,我将 a.png 替换为 b.png。
这工作正常,但是当我向下滚动列表时,现在每 10 个项目显示 b.png!
如果不是设置button.source
,我在保存到数据库后再次调用下面的行,这解决了我的问题,但是我从列表的顶部开始,而不是从我所在的当前位置开始:
ItemsListView.ItemsSource = items;
button.source
如果没有它在每 10 个项目上创建此错误,我该如何设置?
<CollectionView x:Name="Items">
<CollectionView.ItemTemplate>
<DataTemplate>
<ImageButton CommandParameter="{Binding Id}" Source="a.png" Clicked="OnInventoryClicked" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
void OnInventoryClicked(object sender, EventArgs e)
{
var button = (sender as ImageButton);
var itemId = button.CommandParameter.ToString();
var inventoryItem = await App.Database.GetItemAsync(itemId);
inventoryItem.IsInInventory = !inventoryItem.IsInInventory;
await App.Database.SaveItemAsync(inventoryItem);
button.Source = inventoryItem.IsInInventory? "b.png" : "a.png";
}