【发布时间】:2023-03-19 04:26:01
【问题描述】:
我在将ListView 与ViewModel 绑定时遇到问题。我创建了一个ViewModel 类的对象并将其设置为ListView 的BindingContext。该对象在初始化时包含 4 个项目,但 ListView 保持空白。我不确定我在这里缺少什么。我在下面添加了代码-
public class LeadershipViewModel
{
private PfsServiceArea _oldProduct;
public ObservableCollection Products { get; set; }
public LeadershipViewModel()
{
Products = new ObservableCollection();
var PFSArea = new PfsServices().GetPFSServiceArea("Leadership");
if (PFSArea.Count > 0){
foreach(PfsServiceArea pf in PFSArea){
Products.Add(pf);
}
}
}
public void ShowOrHidePoducts(PfsServiceArea product)
{
if (_oldProduct == product)
{
// click twice on the same item will hide it
product.ShowDescription = false;
product.ShowDisplay = true;
UpdateProducts(product);
}
else
{
if (_oldProduct != null)
{
// hide previous selected item
product.ShowDescription = true;
product.ShowDisplay = false;
UpdateProducts(_oldProduct);
}
// show selected item
product.ShowDescription = true;
product.ShowDisplay = false;
UpdateProducts(product);
}
_oldProduct = product;
}
private void UpdateProducts(PfsServiceArea product)
{
var index = Products.IndexOf(product);
Products.Remove(product);
Products.Insert(index, product);
}
我已将其与ListView 绑定,如下所示 -
Private LeadershipViewModel leader = new LeadershipViewModel();
sicCodeList = new CustomListview(ListViewCachingStrategy.RetainElement)
{
HorizontalOptions = LayoutOptions.StartAndExpand,
VerticalOptions = LayoutOptions.EndAndExpand,
ItemTemplate = sicDataTemplate,
SeparatorVisibility = SeparatorVisibility.None,
Margin = new Thickness(-5, 0, 0, 0),
BindingContext = leader
};
sicCodeList.HasUnevenRows = true;
//sicCodeList.BindingContext = leader;
sicCodeList.SetBinding(ListView.ItemsSourceProperty, "Products");
sicCodeList.ItemTapped += (sender, e) => OnItemTapped(sender, e);
【问题讨论】:
标签: c# listview xamarin xamarin.forms viewmodel