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 ClassEnd NamespaceAsyncDelegateCommand 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"
