我正在开发一个库存管理器Xamarin IOS应用程序。我试图创建一个页面,用户可以在其中添加库存,包括一组系列商品到商店库存。我需要的设计是一个具有多个条目的嵌套列表视图,如果第一个列表视图中的Productid属于一个电话项,它将有一个内部List视图,其中包含序列化Number值的条目(Stock.Quantity的大小)。如果产品是附件,它将没有序列号。我尝试过分组和嵌套ListViews,但是没有效果。
股票类别:
public class Stock
{
[Key]
public int ProductId { get; set; }
[Required]
public int StoreId { get; set; }
[Required]
public int Quantity { get; set; }
[JsonIgnore]
public virtual Product Product { get; set; }
[JsonIgnore]
public virtual Store Store { get; set; }
public virtual ICollection<SerialNumber> SerialNumbers { get; set; }
}```
系列编号:
public class SerialNumber { [ForeignKey("ProductId")] public int ProductId { get; set; } [ForeignKey("StoreId")] public int StoreId { get; set; } [Key] public string SerialNumberValue { get; set; } [JsonIgnore] public virtual Stock Stock { get; set; }
}
ViewModel类:
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Windows.Input; using InventoryManager.Models; using Xamarin.Forms;
namespace InventoryManager.ViewModels { public class AddStocksViewModel : BaseViewModel { public AddStocksViewModel() {
stocks = new ObservableCollection<Stock>();
stocks.Add(new Stock() { StoreId = App.currentStore.StoreId, SerialNumbers = new ObservableCollection<SerialNumber>() });
serialNumbers = new ObservableCollection<SerialNumber>();
serialNumbers.Add(new SerialNumber());
}
public IList<Stock> stocks { get; set; }
public IList<SerialNumber> serialNumbers { get; set; }
public IList<Stock> Stocks
{
get { return stocks; }
set { stocks = value; }
}
public IList<SerialNumber> SerialNumbers {
get { return serialNumbers; }
set { serialNumbers = value; }
}
public int ProductId { get; set; }
public ICommand ProductIdChanged {
get
{
return GetProduct;
}
}
public bool IsProductAPhone { get; set; }
//public Stock Stock {get;set;}
public Product Product { get; set; }
public ICommand GetProduct
{
get
{
return new Command(async () =>
{
try
{
Product = await DataStore.GetProductAsync(ProductId);
}
catch
{
}
finally
{
if (Product != null)
IsProductAPhone = Product.ProductType == ProductType.Phone;
}
});
}
}
} }
AddStocksPage代码背后
using System; using System.Collections.Generic; using InventoryManager.ViewModels; using Xamarin.Forms; using InventoryManager.Models; namespace InventoryManager.Views { public partial class AddStocksPage : ContentPage { AddStocksViewModel viewModel;
public AddStocksPage()
{
InitializeComponent();
BindingContext = viewModel = new AddStocksViewModel();
}
public void OnProductIdChanged(object sender, TextChangedEventArgs args)
{
viewModel.GetProduct.Execute(null);
//viewModel.Product.Id = (args.NewTextValue);
}
public void OnQuantityChanged(object sender, TextChangedEventArgs args)
{
try
{
int quantity = Int32.Parse((sender as Entry).Text);
if (viewModel.IsProductAPhone)
{
for (int i = 0; i < quantity; i++)
viewModel.SerialNumbers.Add(new SerialNumber());
}
}
catch {
}
//viewModel.Product.Id = (args.NewTextValue);
}
public void AddItemClicked (object sender, EventArgs args){
viewModel.Stocks.Add(new Stock { StoreId = App.currentStore.StoreId });
}
}
}
**AddStocksPage XAML代码:我尝试过两种方法,一种是注释掉**
``` 请告诉我任何建议/建议。任何关于如何实现这一目标的示例代码都将不胜感激。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。