gpt4 book ai didi

c# - 具有属性的 WPF 调用方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:28 24 4
gpt4 key购买 nike

我对 WPF 不是很精通。我想要做的是从我的 View 绑定(bind)到一个属性,然后用一些东西设置那个值。我让那部分工作没有问题,但我觉得我没有在这里正确使用 MVVM 模式。我在 ViewModel 中有我的属性,绑定(bind)到 View 但是我似乎无法让模型部分按照我的意图工作,因为属性从中获取其值的方法目前也在 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() 应该在模型中,但我不确定如何用它设置属性。我在这里缺少什么?

最佳答案

GetScore() - 方法不应该在模型中。该模型是数据层,因此只有具有属性的数据对象。方法和其他内容由 ViewModel 协调。因此,您可以将 GetScore-Method 放在您的 ViewModel 中,或者将其移动到另一个类并从您的 ViewModel 中调用它。

顺便说一句:你的属性(property)有点奇怪。因为在您的二传手中,您正在设置一个永远不会再次使用的后端字段。你确定这是你想要的吗?您也不应该总是在 getter 中读取文件。

也许你想做这样的事情:

public string Score
{
get { return _score ?? (_score = GetScore()); }
}

所以你只读取文件一次,并将值保存在 _score 中。

关于c# - 具有属性的 WPF 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29206820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com