J86*_*J86 2 c# mvvm windows-phone-8.1
我正在开发Windows Phone 8.1(非SL)应用程序.这是一个关于针对儿童的水果和蔬菜的问答游戏.这是我的整个模型:
namespace FruityLogic.Models
{
public class Quiz
{
public int lives { get; set; }
public Question Question { get; set; }
public List<Feg> Feges { get; set; } // Feg meaning Fruit and Veg ;)
public List<int> IdsOfDoneFeges { get; set; }
public Quiz()
{
LoadData();
lives = 3;
IdsOfDoneFeges = new List<int>();
Question = new Question()
{
Feg = Feges[0],
OptionFeges = new List<Feg>()
{
Feges[1],
Feges[2],
Feges[0]
}
};
}
public void LoadData()
{
Feges = new List<Feg>()
{
new Feg() { Id = 0, Name = "Banana", Image = "../assets/banana.jpg"},
new Feg() { Id = 1, Name = "Orange", Image = "../assets/orange.jpg"},
new Feg() { Id = 2, Name = "Apple", Image = "../assets/apple.jpg"},
new Feg() { Id = 3, Name = "Cherry", Image = "../assets/cherry.jpg"},
new Feg() { Id = 4, Name = "watermelon", Image = "../assets/watermelon.jpg"},
new Feg() { Id = 5, Name = "Lettuce", Image = "../assets/lettuce.jpg"},
};
}
}
}
Run Code Online (Sandbox Code Playgroud)
测验将在屏幕上显示水果或蔬菜的图片,并且用户将为所示的水果/蔬菜选择正确的名称.
我正在努力与MVVM方面.我读了这个教程,但它并不适用于我,或者至少我不能让它与之相关!
我的模型和ViewModel就我所见,完全相同.我是否打算创建一个ViewModel?
另外,我如何通知我的观点,问题已经改变,以便它与下一个问题绑定?我是否INotifyPropertyChanged在Question课堂上实施并为问题的每个属性触发它?或者只有一个属性就够了?另外,如果我这样做,ObservableObject<>我的Quiz班级中的问题没有被包围,测验如何知道问题已经改变了?
正如你所知,我对所有这一切感到困惑,并且非常感谢一些澄清.
我的模型和ViewModel就我所见,完全相同.我是否打算创建一个ViewModel?
是.您需要一个ViewModel来将View数据绑定到.问题是你是否需要一个单独的模型.这取决于你用它做什么,比如存储在Db或文件中.但是单独的模型通常是个好主意.
并且您的Model属性都没有实现INotifyPropertyChanged,这是要解决的问题,例如通过使用INPC在VM中复制它们.
另外,我如何通知我的观点,问题已经改变,以便它与下一个问题绑定?
通过添加SelectedQuestion属性.这是VM的任务."选定"对于模型而言通常不是一个有意义的概念.
总之,ViewModel应该执行'Presentation Logic',Model是'Bussines Logic'.
通过将整个Model类转发为单个属性,ViewModel可以非常简单.然后添加SelectedSomething等.
我一直很喜欢这张照片,但其他人觉得它太复杂了.
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |