我似乎找不到用于MVVM Xamarin表单应用程序的结构化和使用数据的最佳实践或最佳机制。这可能是对如何解决该问题的简单误解,但我不确定。
我曾尝试使用IEnumerable,IList和一个用于多维数据的简单数组(绑定?),但是我对MVVM还是很陌生,所以,我可能会遇到这种错误。
这是针对Xamarin.Forms Android应用程序的,因此无法使用MySQL类型的数据绑定(因为您无法存储在数据库中)。因此,使用这些数据类是正确的方法,但是我不知道如何构造关系数据。 每个传送带可以包含许多视频,按钮和其他内容。
我在此浏览了Xamarin示例,但没有一个解决应用程序附带的关系数据。
// Trying to use an aray
public IList<BeltContent> BeltContents { get; private set; }
public BeltData()
{
// Bringing it all together
BeltContents = new List<BeltContent>();
BeltContents.Add(new BeltContent
{
BeltName = "White",
VideoContent = {
"https://url-to-my-video01",
"https://url-to-my-video01" }
});
}
//Trying to use an IList to initialize inside
public IList<BeltContent> BeltContents { get; private set; }
public Ilist<VideoContent> VideoContents {get; private set; }
public BeltData()
{
// Bringing it all together
BeltContents = new List<BeltContent>();
VideoContents = new List<VideoContent>();
BeltContents.Add(new BeltContent
{
BeltName = "White",
VideoContent = VideoContents.Add(new VideoContent
{
VideoName = "SomeName",
VideoUri = "Https://some-url-to-video"
},
{
//etc
}
});
}
我也有这些的数据模型 注意:我尝试过的其他路线的BeltContent注释。 添加为注释以合并代码
// The Data Model for videos (note they all follow this pattern)
public class VideoContent
{
public string VideoName { get; set; }
public string VideoUri { get; set; }
}
// Full content for the data model
public class BeltContent
{
public string BeltName { get; set; }
public string BeltDescription { get; set; }
// public IEnumerable<VideoContent> VideoContent {get; set;}
// public string[] VideoContent {get; set; }
// public IList<VideoContent> VideoContent {get; set;}
public VideoContent VideoContent {get; set; }
public ButtonResourceUri ButtonResourceUri { get; set; }
public WrittenContent WrittenContent { get; set; }
}
我希望可以使用多维数组或IList来存储嵌套数据。
答案 0 :(得分:1)
阅读您的帖子评论,我正在盲目尝试...
由于我是Xamarin的新手(来自Windows Forms和Server),这对我来说也是一个问题。如何储存?大的ORM无效...?!
这相对容易-您在Xamarin上拥有自己的规则。有许多针对Xamarin相关问题的解决方案,我将尝试展示我的标准解决方案。
我总是喜欢使用in this gist
这样的PCLStorage解决方案xamarin的一个窍门是:尝试查找.net标准库,您应该(在很多情况下)可以在大多数xamarin平台上使用它。
第二个是:注意在nuget导入中打开的自述文件!!!这些非常重要。我过去常常单击它们,却几乎忘记了所有初始化例程。花了我几个小时
第三个是:基本应用程序和所有与平台相关的应用程序中都需要安装许多nuget库。不要忘记在SQLiteExtensions之类的情况下-它会安装平台相关的库。
(伙计们,不要为此而杀了我-我只是在试图帮助;-))
顺便说一句:SQLiteExtensions使用IList或List ...如果性能有问题,您可以稍后再切换到SQLiteExtensions的缓存派生分支(如果需要)