I have a bound property like this:
public string MyPath
{
get { return _mypath; }
set
{
_mypath = value;
NotifyPropertyChanged(() => MyPath);
LoadSomeStuffFromMyPath(mypath)
}
}
I'd like the make LoadSomeStuffFromMyPath async but I cannot await from a property. Is there a simple way to do this?
EDIT: More than one person has said not to use a property so I want to call this out. I am using WPF and this property is bound to the UI. I have to use a property.
Since you want to force the operation to not continue until this is complete, I would suggest making a method to handle loading and displaying your progress.
You could use a separate property to disable the UI while this loads, which could effectively "block" your user until the operation completes:
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;
}
This allows you to still bind, as normal, with WPF, but have your UI reflect that the operation is running (asynchronously) and display progress, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With