Paul Patterson
Top achievements
Rank 1
Paul Patterson
asked on 28 Jan 2011, 07:14 PM
Trying to display a RadBusyIndicator in an WPF MVVM application however the control does not appear when IsBusy binding occurs.
Here is a portion of what is in the user control xaml...
I bind the IsBusy to a property in my ViewModel, set the property to true, and then fire OnPropertyChanged to rebind the view. Unfortunately the BusyIndicator does not show.
Has anyone experienced this challenge before, and if so, what was done to resolve it?
I'll follow up this post with an example solution that recreates the problem. Until then, let me know if you have any insights into this.
Cheers,
Paul
Here is a portion of what is in the user control xaml...
<
Grid
>
<
telerik:RadBusyIndicator
IsBusy
=
"{Binding IsBusy}"
Grid.Row
=
"0"
>
<
Grid
>
<
StackPanel
Margin
=
"10,10,10,10"
>
...some content here...
</
StackPanel
>
</
Grid
>
</
telerik:RadBusyIndicator
>
</
Grid
>
I bind the IsBusy to a property in my ViewModel, set the property to true, and then fire OnPropertyChanged to rebind the view. Unfortunately the BusyIndicator does not show.
Has anyone experienced this challenge before, and if so, what was done to resolve it?
I'll follow up this post with an example solution that recreates the problem. Until then, let me know if you have any insights into this.
Cheers,
Paul
14 Answers, 1 is accepted
0
Paul Patterson
Top achievements
Rank 1
answered on 29 Jan 2011, 12:03 AM
Solved it!
Built an async specific delegate command for my ViewModel and then hooked into that to update the IsBusy binding. Even threw in some view navigation with a RadTransitionControl cherry on top! All is good :)
If you are curious how this was all put together, let me know and I'll post about it on my blog. (Ah, I'll post about it anyway otherwise I'll forget what I did :P )
Cheers!
Built an async specific delegate command for my ViewModel and then hooked into that to update the IsBusy binding. Even threw in some view navigation with a RadTransitionControl cherry on top! All is good :)
If you are curious how this was all put together, let me know and I'll post about it on my blog. (Ah, I'll post about it anyway otherwise I'll forget what I did :P )
Cheers!
0
Andreas Lindahl
Top achievements
Rank 1
answered on 02 Feb 2011, 01:48 PM
Hi Paul,
I am very interested in your solution so please do post it on your blog if possible.
Thanks in advance!
I am very interested in your solution so please do post it on your blog if possible.
Thanks in advance!
0
Paul Patterson
Top achievements
Rank 1
answered on 02 Feb 2011, 03:47 PM
0
Ronak
Top achievements
Rank 1
answered on 03 Feb 2011, 05:01 PM
Hi Paul
I am working on MVVM pattern with Command in Silverlight can you please share with me how did u utilize busyIndicator in MVVM.
i will appriciate your work.
I am working on MVVM pattern with Command in Silverlight can you please share with me how did u utilize busyIndicator in MVVM.
i will appriciate your work.
0
Paul Patterson
Top achievements
Rank 1
answered on 03 Feb 2011, 10:07 PM
I'll be posting a full example on my blog (soon). Until then, check out this article by Anoot Madhusudanan here. http://amazedsaint.blogspot.com/2010/10/asynchronous-delegate-command-for-your.html .
What I did was, when the async command is executed, the delegate action updates a boolean property (which happens to be named isBusy) in the ViewModel to true. When the async command is done, the isBusy property is set back to false.
For example, in my ViewModel...
AsyncDelegateCommand is a class that is the same that Anoot wrote about.
In the View...
I have a lot more happening in there of course - with Prism and all, but this should get you started.
- Cheers
What I did was, when the async command is executed, the delegate action updates a boolean property (which happens to be named isBusy) in the ViewModel to true. When the async command is done, the isBusy property is set back to false.
For example, in my ViewModel...
Namespace
ViewModels
Public
Class
UserLoginViewModel
Inherits
ViewModelBase
Private
_isBusy
As
Boolean
=
False
Public
Property
IsBusy
As
Boolean
Get
Return
_isBusy
End
Get
Set
(
ByVal
value
As
Boolean
)
_isBusy = value
OnPropertyChanged(
"IsBusy"
)
End
Set
End
Property
Public
Property
LoginAsyncCommand
As
ICommand
Public
Sub
New
(
ByVal
regionManager
As
IRegionManager,
ByVal
container
As
IUnityContainer)
Dim
loginAction
As
Action =
New
Action(
AddressOf
LoginExecute)
LoginAsyncCommand =
New
AsyncDelegateCommand(loginAction,
Nothing
,
Sub
() LoadView())
End
Sub
Private
Sub
LoginExecute()
If
IsBusy
Then
Exit
Sub
End
If
IsBusy =
True
' Do some login stuff here...
IsBusy =
False
End
Sub
Public
Sub
LoadView()
Try
If
_loginSuccess
Then
' Do some view management here.
End
If
Catch
ex
As
Exception
LoginSuccess = ex.Message
End
Try
End
Sub
End
Class
End
Namespace
AsyncDelegateCommand is a class that is the same that Anoot wrote about.
In the View...
<
Grid
>
<
telerik:RadBusyIndicator
IsBusy
=
"{Binding IsBusy}"
Grid.Row
=
"0"
>
<
Grid
>
<
StackPanel
>
<!-- Some content here.... -->
<
Button
x:Name
=
"LoginCommand"
Content
=
"Login..."
Command
=
"{Binding LoginAsyncCommand}"
/>
</
StackPanel
>
</
Grid
>
</
telerik:RadBusyIndicator
>
</
Grid
>
I have a lot more happening in there of course - with Prism and all, but this should get you started.
- Cheers
0
Ronak
Top achievements
Rank 1
answered on 03 Feb 2011, 10:10 PM
Thanks Paul for your Quick reply.
0
Paul Patterson
Top achievements
Rank 1
answered on 12 Feb 2011, 12:08 AM
Hello,
As promisied, here is the link to the blog posting on how I implemented an asynchronous command delegate to achieve the RadBusyIndicator in an MVVM application.
www.PaulSPatterson.com
Cheers!
As promisied, here is the link to the blog posting on how I implemented an asynchronous command delegate to achieve the RadBusyIndicator in an MVVM application.
www.PaulSPatterson.com
Cheers!
0
Hello Paul,
Teodor
the Telerik team
Please refer also to this online demo to see RadBusyIndicator in a MVVM scenario with proper behavior when changing the IsBusy property.
Hope this will be of use. We will be glad to assist you further.
Teodor
the Telerik team
0
Paul Patterson
Top achievements
Rank 1
answered on 16 Feb 2011, 04:21 PM
I was able to resolve this already (as per the link I provided earlier). Thanks anyway.
0
Andreas Lindahl
Top achievements
Rank 1
answered on 16 Feb 2011, 05:02 PM
0
Hi,
Vlad
the Telerik team
I've just tried the demo an it works as expected. You can check the attached screenshot.
Regards,Vlad
the Telerik team
0
Mark
Top achievements
Rank 1
answered on 29 Aug 2011, 03:50 PM
I would be interested. I glanced at your website and didn't see it.
-Markus
-Markus
0
Hello Markus,
You can also get the link for the demos from the WPF products' page: http://www.telerik.com/products/wpf.aspx
Kind regards,
Konstantina
the Telerik team
You can also get the link for the demos from the WPF products' page: http://www.telerik.com/products/wpf.aspx
Kind regards,
Konstantina
the Telerik team
Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>
0
Rob
Top achievements
Rank 1
answered on 26 Jul 2016, 02:44 AM
fyi - this is a few years later, following the link to Paul's site triggers my Alvira anti-virus
"The site ahead contains malware"