【发布时间】:2021-05-17 11:04:47
【问题描述】:
由于在开发人员的 GitHub 上没有任何回应,我将在这里重复我的问题。 我希望有人能以某种方式帮助我。
这是我第一次使用 MvvmLight,所以我希望我没有忽略一些明显的东西。
在我的 WPF ViewModel 我有类似的东西:
private ICommand readFileCommand;
public ICommand ReadFileCommand => readFileCommand ?? (readFileCommand = new RelayCommand(ReadFile));
private void ReadFile()
{
FileMessage = "Message.";
}
private string fileMessage;
public string FileMessage
{
get { return fileMessage; }
set
{
//Set(ref fileMessage, value);
fileMessage = value;
RaisePropertyChanged();
}
}
我有几个问题。
- 主要问题是在 ReadFile() 等方法中设置 FileMessage 等属性不会导致在 ReadFile 完成之前更新视图。
- 使用当时成功的 RaisePropertyChanged() 和使用什么都不做的 Set() 是有区别的。尽管后者确实在这种方法之外起作用。
- 问题延伸到其他元素,例如 DataView 上的 DataGrid。
想知道被调用的方法是否应该是异步的,但这似乎不合逻辑。我还没有尝试过,因为这并不真正符合我想要实现的目标。
那么发生了什么?我忽略了什么吗?这是框架的限制吗?或者这是一个错误?
谢谢!
【问题讨论】:
-
这能回答你的问题吗? WPF - UI not updating from Command
-
你必须至少显示视图代码。
-
也谢谢 Rekshino。它看起来确实相似,解释也有道理。我一直在试验它。但我不明白它有什么不同。
标签: wpf mvvm-light relaycommand