我有一个这样的绑定(bind)属性:
public string MyPath
{
get { return _mypath; }
set
{
_mypath = value;
NotifyPropertyChanged(() => MyPath);
LoadSomeStuffFromMyPath(mypath)
}
}
我想要使 LoadSomeStuffFromMyPath 异步,但我无法等待某个属性。有没有简单的方法可以做到这一点?
编辑:不止一个人说过不要使用某个属性,所以我想指出这一点。我正在使用 WPF 并且此属性绑定(bind)到 UI。我必须使用属性。
最佳答案
既然你想强制操作在完成之前不继续,我建议创建一个方法来处理加载和显示你的进度。
您可以在加载时使用一个单独的属性来禁用 UI,这可以有效地“阻止”您的用户,直到操作完成:
public string MyPath
{
get { return _mypath; }
set
{
_myPath = value;
NotifyPropertyChanged(() => MyPath);
UpdateMyPathAsync();
}
}
public async Task UpdateMyPathAsync()
{
this.EnableUI = false; // Stop user from setting path again....
await LoadSomeStuffFromMyPathAsync(MyPath);
this.EnableUI = true;
}
这允许您仍然像往常一样与 WPF 绑定(bind),但让您的 UI 反射(reflect)操作正在运行(异步)并显示进度等。
关于c# - 与 WPF 属性异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550402/