我对WPF不太熟练。我想要做的是从我的视图绑定到属性,然后用某些东西设置该值。我已经没有遇到麻烦,但我觉得我没有正确使用MVVM模式。我在ViewModel中拥有我的属性,绑定到View但是我似乎无法使Model部分工作,因为我打算将属性从其获取其值的方法当前也在ViewModel中。
以下是我目前的情况:
public class MainViewModel : ViewModelBase
{
private Awesome _model; //this is my model
private string _score;
public string Score
{
get { return GetScore(); }
set
{
_score = value;
}
}
public string GetScore()
{
try
{
using (StreamReader sr = new StreamReader(@"C:\somepath"))
{
String line = sr.ReadToEnd();
return line;
}
}
catch (Exception)
{
MessageBox.Show("File could not be found! :(");
throw;
}
}
}
这很好用,但现在一切都在ViewModel中。据我所知,GetScore()应该在Model中,但是我不知道如何用它来设置属性。我在这里缺少什么?
答案 0 :(得分:2)
GetScore()
- 方法不应该在模型中。模型是数据层,因此只有具有属性的数据对象。方法和其他东西由ViewModel协调。因此,您可以在ViewModel中放置GetScore-Method或将其移至另一个类并从ViewModel调用它。
也许你想做类似的事情:
public string Score
{
get { return _score ?? (_score = GetScore()); }
}
因此,您只需阅读一次文件,并将值保存在_score中。
答案 1 :(得分:1)
您的GetScore()属于ViewModel,因为它是数据层。 (当然你可以把它移到另一个班级,但它不是我在ViewModel中的POV的wrog,把它视为一个扩展的getter;)
但是
return this.GetScore()