The MS Silverlight team I believe are researching a type of procedural animations framework BUT I think that is completely different to what Jonas is trying to do here with his queued animations problem.
This is something I believe will always be a problem ? ----- Original Message ----- From: Dimaz Pramudya [mailto:[EMAIL PROTECTED] Sent: 3/05/2008 7:08:24 AM To: listserver@ozsilverlight.com Subject: Re: [OzSilverlight] Strange databinding problem > Yeah.. I reckon this animation queueing stuff should be abstracted out > from the developer end. Perhaps on the next release of SilverLight, > they should have this functionality built into the framework itself. > > On 5/3/08, Jonas Follesø <[EMAIL PROTECTED]> wrote: > > .net noobie: Thanks for the tip, but that's not the problem. I hook up the > > event in the DependencyPropertyChanged delegate. > > > > Dimaz: You're right, that's the problem. The PropertyChangedCallback > > executed before the control is loaded, and therefore I have to queue the > > animation. I added a simple Queue<Storyboard> which I empty and play in the > > control loaded events, and it now works... > > > > But this solution still feels a little bit "Frankenstein". In order to > > trigger animation based on a databound object I need to: > > > > 1) Create a dependency property (even tough the object is allready bound > > using DataContext) > > 2) Hook the PropertyChangedCallback of the dependency property to add the > > PropertyChanged event listener > > 3) Queue any initial state animations in the PropertyChangedCallback > > 4) Subscribe to the Control_Loaded event and empty the queue and play any > > queued animation... > > > > I've attached an updated version which now works, but still isn't to > > elegant. > > > > > > > > On Fri, May 2, 2008 at 11:07 PM, Dimaz Pramudya <[EMAIL PROTECTED]> > > wrote: > > > > > Also, another thing to note is the animation will only start after the > > > user control / canvas is LOADED. > > > This means, any request to start the animation before hand (eg: in > > > constructor, etc) will be ignored. > > > > > > Therefore, it is best to implement your own "Animation" Queueing engine > > > and invoke the animation within the OnLoaded Event Handler. > > > Hope this helps. > > > > > > Dimaz Pramudya > > > > > > > > > On Fri, May 2, 2008 at 10:54 PM, .net noobie <[EMAIL PROTECTED]> > > > wrote: > > > > > > > So the problem is that when the new list of Ordes is created that the > > > > animation is not fired... > > > > becuase when i run the sample and hit the button the sample seems to > > > > work fine... > > > > > > > > correct > > > > > > > > the reason that the animation is not firing when the list is created is > > > > becuase > > > > the "PropertyChanged" value for the "AllGood" property is equal to > > "null" > > > > once it has been set once it is then equal to "Not null" > > > > > > > > in your code you test for is equal to "not null" > > > > > > > > thus it never fires on the initial creation of the order in the > > > > OrdersList, so that Void/Method runs, but it fails the test... > > > > > > > > *public virtual void OnPropertyChanged(string propertyName) > > > > { > > > > if (PropertyChanged != null) > > > > PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); > > > > }* > > > > > > > > > > > > Anyway I think that is your issue? > > > > > > > > GoodLuck :) > > > > > > > > > > > > On 5/2/08, Jonas Follesø <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Hi, > > > > > > > > > > I created a simple repro of my problem. It consists of Order.cs (the > > > > > object we wan't to bind against), Page.xaml, the main page containing > > a > > > > > ListBox with a Custom OrderControl as the DataTemplate to display the > > Order > > > > > object. The OrderControl contains a "light" that should animate > > between > > > > > red/green depending on a property on the Order object. > > > > > > > > > > Hope this sample clarifies my problem and what I try to achieve. > > > > > > > > > > Cheers, > > > > > Jonas :) > > > > > > > > > > > > > > > But > > > > > > > > > > On Fri, May 2, 2008 at 6:17 PM, Jonas Follesø <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > > > > > > Hi Jose, > > > > > > > > > > > > First, thanks for helping me out. Friday afternoons are tough, so no > > > > > > worries ;) > > > > > > > > > > > > I'll create a clean little sample to illustrate what I'm trying to > > > > > > do. This is either a common problem, or I'm approaching this from > > the wrong > > > > > > angle ;) > > > > > > > > > > > > I wan't to trigger animations based on property changes on my data > > > > > > bound object (datacontext). In order to programatically trigger the > > > > > > animations I need to hook the PropertyChanged event, and in order to > > do that > > > > > > I tried to create a dependency property and bind it the same way I > > bind the > > > > > > data context. When the dependency property changed callback is > > executed I > > > > > > invoke an animation, but "nothing happens". > > > > > > > > > > > > I'll send a new post later today with a simple isolated sample :P > > > > > > > > > > > > Have a GREAT weekend! > > > > > > > > > > > > cheers, > > > > > > Jonas > > > > > > > > > > > > On Fri, May 2, 2008 at 5:21 PM, Jose Fajardo < > > > > > > [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > > > Hey mate, > > > > > > > > > > > > > > > > > > > > > I understood most of what you're trying to do, it's the > > > > > > > fact that it's Friday and > > > > > > > my brain is completely fried that I can't work out why it's not > > > > > > > working for ya. > > > > > > > > > > > > > > > > > > > > > Correct me if im wrong here BUT what your saying is that > > > > > > > the newly created dependency > > > > > > > property is not being triggered when an animation runs.. Correct? > > > > > > > > > > > > > > > > > > > > > If so what triggers this animation, what is it that is > > > > > > > actually calling the animation > > > > > > > in the first place ? > > > > > > > > > > > > > > > > > > > > > Regards Jose > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ======================================= > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Jose, > > > > > > > > > > > > > > And thanks for the link. I have implemented the > > > > > > > INotifyPropertyChanged event on > > > > > > > my bussiness object SilverlightOrder. > > > > > > > > > > > > > > This is the problem: > > > > > > > > > > > > > > 1) I have a list of orders: List > > > > > > > 2) I set the list as the DataContext on a ListView control > > > > > > > 3) The ListView control creates one user control for each > > > > > > > SilverlightOrder object, > > > > > > > and passes on the SilverlightOrder object to the user controls > > > > > > > DataContext property > > > > > > > > > > > > > > 4) Inside the user control I wan't to listen to the > > > > > > > PropertyChanged event on the > > > > > > > SilverlightOrder objekt. How ever, since I can't override the > > > > > > > DataContext property > > > > > > > on my user control, I don't get access to the SilverlightOrder > > > > > > > object in order to > > > > > > > hook up the event... > > > > > > > > > > > > > > > > > > > > > I tried making a DependencyProperty on my user control called > > > > > > > order like this: > > > > > > > > > > > > > > > > > > > > > public static readonly DependencyProperty OrderProperty = > > > > > > > DependencyProperty.Register("Order", typeof(SilverlightOrder), > > > > > > > typeof(OrderStatusLine), > > > > > > > new PropertyChangedCallback(DepCallback)); > > > > > > > > > > > > > > > > > > > > > > > > > > > > And then bind it the same way I bind the DataContext property: > > > > > > > > > > > > > > > > > > > > > > > > > > > > The DepCallback method do execute, but if I run an animation on > > > > > > > the control (which > > > > > > > get's passed as the DependencyObject property) nothing happens... > > > > > > > It's allmost like > > > > > > > I change the state "to early"...? > > > > > > > > > > > > > > > > > > > > > public static void DepCallback(DependencyObject obj, > > > > > > > DependencyPropertyChangedEventArgs > > > > > > > e) > > > > > > > { > > > > > > > ((OrderStatusLine)obj).SetInitialStateBasedOnData(); > > > > > > > } > > > > > > > > > > > > > > > > > > > > > So, yeah, I deffenetly wan't to hook the PropertyChanged event of > > > > > > > my data bound > > > > > > > object and run animations based on any changes... But, I haven't > > > > > > > figured out how > > > > > > > to hook the event up.. :P > > > > > > > > > > > > > > > > > > > > > cheers, > > > > > > > Jonas > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, May 2, 2008 at 3:58 PM, Jose Fajardo < [mailto: > > > > > > > [EMAIL PROTECTED]@liquidlounge.com.au > > > > > > > >wrote: > > > > > > > > > > > > > > What your asking for is a perfect candidate for dependency > > > > > > > properties :) > > > > > > > > > > > > > > > > > > > > > > > > > > > > When you create properties on a class you have the choice to make > > > > > > > them ordinary > > > > > > > > > > > > > > properties or a dependency property (introduced in Silverlight 2.0 > > > > > > > and previously > > > > > > > > > > > > > > existing in WPF). > > > > > > > > > > > > > > > > > > > > > > > > > > > > The reason you would want to make a property into a dependency > > > > > > > property is so that > > > > > > > > > > > > > > it can be databound to (as your probably aware of) > > > > > > > > > > > > > > > > > > > > > > > > > > > > In the case of wanting to listen to a property if it changes you > > > > > > > would want to > > > > > > > > > > > > > > implement the INotifyPropertyChanged class... > > > > > > > > > > > > > > > > > > > > > > > > > > > > The following like is a good post to explain databinding , it > > > > > > > talks about binding > > > > > > > > > > > > > > ways, value converters, property changed notifications etc.. > > > > > > > > > > > > > > > > > > > > > Read it and let me know if your still confused > > > > > > > > > > > > > > > > > > > > > > > > > > > > [ [ > > > > > > > > > http://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271%5Dhttp://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271 > > > > > > > ] > > > > > > > > > > > > > > > > http://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271]http://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271<http://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271%5Dhttp://www.u2u.info/Blogs/Peter/Lists/Posts/Post.aspx?ID=271> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > =============================================== > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hmm.. > > > > > > > > > > > > > > > > > > > > > Nope, dont' have any depdenceny properties in my project... > > > > > > > > > > > > > > > > > > > > > Btw: Have another data binding question: > > > > > > > > > > > > > > > > > > > > > I wan't to trigger an animation when a property on the databound > > > > > > > object changes. > > > > > > > > > > > > > > Since we dont have triggers I have to do this in code, but I can't > > > > > > > find a way to > > > > > > > > > > > > > > "hook" the event to the DataContext object... > > > > > > > > > > > > > > > > > > > > > > > > > > > > So, when ever a property on my data context object changes I wan't > > > > > > > to run code to > > > > > > > > > > > > > > check if I need to run any animations... > > > > > > > > > > > > > > > > > > > > > Any suggestions? > > > > > > > > > > > > > > > > > > > > > Can't find a "ondatabinding" or "ondatacontextchanged" event to > > > > > > > hook it up... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, May 2, 2008 at 12:20 PM, Jose Fajardo <[mailto: [mailto: > > > > > > > [EMAIL PROTECTED] > > > > > > > [EMAIL PROTECTED] ] [mailto:[EMAIL PROTECTED] > > > > > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > >wrote: > > > > > > > > > > > > > > > > > > > > > It sounds suspiciously related to dependency objects.. Does your > > > > > > > usercontrols implement > > > > > > > > > > > > > > > > > > > > > it's bindable properties as dependency properties? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ===================================================== > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm doing some Silverlight databinding, and get a strange message > > > > > > > in the Output > > > > > > > > > > > > > > > > > > > > > window when running in debug mode: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > BINDING: Can't convert type myFosters.SilverlightOrder to type > > > > > > > System.Windows.DOWrapper > > > > > > > > > > > > > > > > > > > > > > > > > > > > BINDING: Can't convert type myFosters.SilverlightOrder to type > > > > > > > System.Windows.DOWrapper > > > > > > > > > > > > > > > > > > > > > BINDING: Can't convert type myFosters.SilverlightOrder to type > > > > > > > System.Windows.DOWrapper > > > > > > > > > > > > > > > > > > > > > BINDING: Can't convert type myFosters.SilverlightOrder to type > > > > > > > System.Windows.DOWrapper > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So basically I create a custom control for each SilverlightOrder > > > > > > > and bind it... > > > > > > > > > > > > > > > > > > > > > > > > > > > > I tried googeling for System.Windows.DOWrapper - No hits... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Any ideas? > > > > > > > > > > > > > > > > > > > > > > > > > > > > The app runs fine, and I can bind to properties on the > > > > > > > SilverlightOrder object inside > > > > > > > > > > > > > > > > > > > > > the OrderStatusLine control, but I still want to figure out what > > > > > > > that message means. > > > > > > > > > > > > > > > > > > > > > > > > > > > > cheers, > > > > > > > > > > > > > > > > > > > > > Jonas > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com > > > > > > > > > > > > > > > > > > > > > - to unsubscribe from this list, send a message back to the list > > > > > > > with 'unsubscribe' > > > > > > > > > > > > > > > > > > > > > as the subject. > > > > > > > > > > > > > > > > > > > > > Powered by [ [http://mailenable.com] http://mailenable.com ] [ > > > > > > > http://mailenable.com] > > > > > > > mailenable.com - List managed by [ [http://www.readify.net] > > > > > > > http://www.readify.net > > > > > > > ] [http://www.readify.net] www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com > > > > > > > > > > > > > > - to unsubscribe from this list, send a message back to the list > > > > > > > with 'unsubscribe' > > > > > > > > > > > > > > as the subject. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Powered by [ [http://mailenable.com] http://mailenable.com ] [ > > > > > > > http://mailenable.com] > > > > > > > mailenable.com - List managed by [ [http://www.readify.net] > > > > > > > http://www.readify.net > > > > > > > ] [http://www.readify.net] www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com > > > > > > > > > > > > > > - to unsubscribe from this list, send a message back to the list > > > > > > > with 'unsubscribe' > > > > > > > > > > > > > > as the subject. > > > > > > > > > > > > > > Powered by [http://mailenable.com]mailenable.com - List managed > > > > > > > by [http://www.readify.net]www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com > > > > > > > - to unsubscribe from this list, send a message back to the list > > > > > > > with 'unsubscribe' > > > > > > > as the subject. > > > > > > > > > > > > > > > > > > > > > Powered by [http://mailenable.com]mailenable.com - List managed > > > > > > > by [http://www.readify.net]www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com > > > > > > > - to unsubscribe from this list, send a message back to the list > > > > > > > with 'unsubscribe' > > > > > > > as the subject. > > > > > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > > > OzSilverlight.com - to unsubscribe from this list, send a message > > back to > > > > > > > the list with 'unsubscribe' as the subject. > > > > > > > > > > > > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------- > > > > > OzSilverlight.com - to unsubscribe from this list, send a message back > > to > > > > > the list with 'unsubscribe' as the subject. > > > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > > > > > > > > > > > > > > > > > -- > > > > .net noobie > > > > > > > > I have made a blog, but remember I am just a noobie > > > > http://dotnetnoobie.spaces.live.com/ > > > > > > > > Now on the Gold Coast, need a worker, please contact me, thank you. > > > > ------------------------------------------------------------------- > > > > OzSilverlight.com - to unsubscribe from this list, send a message back > > to > > > > the list with 'unsubscribe' as the subject. > > > > > > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > > > > > ------------------------------------------------------------------- > > > OzSilverlight.com - to unsubscribe from this list, send a message back to > > > the list with 'unsubscribe' as the subject. > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > > > > > > ------------------------------------------------------------------- > > OzSilverlight.com - to unsubscribe from this list, send a message back to > > the list with 'unsubscribe' as the subject. > > > > Powered by mailenable.com - List managed by www.readify.net > > > > > > -- > Sent from Gmail for mobile | mobile.google.com > > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to the > list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > ------------------------------------------------------------------- OzSilverlight.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com - List managed by www.readify.net