Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

This Sample was update for Silverlight 2 Beta 2 ( the beta 1 example is here )

I can see XamlReader.Load has it's uses for adding FrameworkElements at runtime, but I really hate the way the code looks. Additionally, I don't like the idea of managing a bunch of String.Format statements for my XAML. Things get even more complex when you want to take advantage of events. Luckily, there is an alternative.

Here is an example of adding elements (ellipse, storyboard, doubleanimation) at runtime, and attaching events so that they are removed when the storyboard ends:

public Page()
        {
            InitializeComponent();
            this.MouseLeftButtonUp += new MouseButtonEventHandler(Page_MouseLeftButtonUp);
            updateElementCount();
        }

        public int spriteCount { get; set; }

        void Page_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            Point point = e.GetPosition(this);
            Ellipse ellipse = new Ellipse();
            SolidColorBrush mySolidColorBrush = new SolidColorBrush();
            DoubleAnimation animation = new DoubleAnimation();
            Storyboard storyBoard = new Storyboard();
            
            spriteCount += 1;
            string spriteName =string.Format("SpriteEllipse{0}", spriteCount);
            ellipse.SetValue(Ellipse.NameProperty, spriteName);
            mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 0);
            ellipse.Fill = mySolidColorBrush;
            ellipse.Width = 30;
            ellipse.Height = 30;
            ellipse.SetValue(Canvas.TopProperty, (point.Y - ellipse.Width/2));
            ellipse.SetValue(Canvas.LeftProperty, (point.X - ellipse.Width/2));
            LayoutRoot.Children.Add(ellipse);
            
            animation.Duration = new TimeSpan(0,0,3);
            animation.From = 1;
            animation.To = 0;
            animation.SetValue(Storyboard.TargetNameProperty, spriteName);
            animation.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath(String.Format("{0}.Opacity", spriteName)));

            storyBoard.Completed+=new EventHandler(storyBoard_Completed);
            storyBoard.SetValue(Storyboard.TargetNameProperty, spriteName);
            
            storyBoard.Children.Add(animation);
            LayoutRoot.Resources.Add(string.Format("{0}_storyBoard", spriteName), storyBoard);
            storyBoard.Begin();

            updateElementCount();
        }

        void storyBoard_Completed(object sender, EventArgs e)
        {
            Storyboard storyBoard = (Storyboard)sender;
            string spriteName = storyBoard.GetValue(Storyboard.TargetNameProperty).ToString();
            FrameworkElement sprite = (FrameworkElement)LayoutRoot.FindName(spriteName);
            LayoutRoot.Children.Remove(sprite);
            LayoutRoot.Resources.Remove(string.Format("{0}_storyBoard", spriteName));
            updateElementCount();
        }

        void updateElementCount()
        {
            this.txtChildren.Text = string.Format("Children.Count = {0}", LayoutRoot.Children.Count());
            this.txtResources.Text = string.Format("Resources.Count = {0}",  LayoutRoot.Resources.Count);
        }
Published Saturday, June 07, 2008 7:37 PM by RogerGuess

Comments

# Runtime Alternative to XamlReader.Load in Silverlight

Sunday, June 08, 2008 5:31 PM by Learning Silverlight

Update: This was a Silverlight Beta 1 example. Beta 2 now has updates to make this even easier. Here

# Runtime Alternative to XamlReader.Load in Silverlight

Wednesday, June 11, 2008 10:46 PM by RogerGuess

Update: This was a Silverlight Beta 1 example. Beta 2 now has updates to make this even easier. Here

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Thursday, June 12, 2008 11:17 AM by Frank Wu

Your example is too simple, we need XamlReader.Load, because it can support complex application. If you hate managing a bunch of String, we can read element one by one just like xmlreader, but XamlReader does not support it.

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Friday, July 18, 2008 12:46 PM by John "Z-Bo" Zabroski

Clever, and very cleanly written code.

However, You *have* to use XamlReader.Load to programmatically assign ControlTemplate and DataTemplate objects.  I think this is what Frank Wu means by "support[ing] complex applicationSleep".

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Saturday, November 15, 2008 4:19 PM by ijaxakxcq

KJTKsz  <a href="opyihbctuetj.com/.../a>, [url=http://rgpzncazbkcd.com/]rgpzncazbkcd[/url], [link=http://bygqstucypwo.com/]bygqstucypwo[/link], http://wrchbuixgbvv.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Saturday, January 17, 2009 3:23 PM by dsogyckdlg

yGXs5J  <a href="bjctspipsmiq.com/.../a>, [url=http://rdcofnrjozev.com/]rdcofnrjozev[/url], [link=http://vbkrkcdpdrpv.com/]vbkrkcdpdrpv[/link], http://zkzphxkqxizj.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, February 02, 2009 10:03 PM by fhvwzv

4xc2yY  <a href="aervlezoogzu.com/.../a>, [url=http://cgrqspepcweu.com/]cgrqspepcweu[/url], [link=http://mcfucvqwljev.com/]mcfucvqwljev[/link], http://wtxbqgnjfdsh.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Thursday, February 05, 2009 3:38 PM by vcyyekqrzdg

LyTaBE  <a href="kulkfvfrkpob.com/.../a>, [url=http://xavfvwdvjzwh.com/]xavfvwdvjzwh[/url], [link=http://ogpohjdlwese.com/]ogpohjdlwese[/link], http://yuoxppnumggj.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Friday, February 06, 2009 3:12 AM by fvgneiifhw

cwlou8  <a href="pbkkzglrxboa.com/.../a>, [url=http://hpzxaytyiebn.com/]hpzxaytyiebn[/url], [link=http://smsvueieimxt.com/]smsvueieimxt[/link], http://dbyjlwrxnvhe.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:13 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:13 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:13 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:13 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:13 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:14 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:14 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:14 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 4:14 PM by x0a6812

<a href="http://a33ea2.com">0199ec</a> | [url=http://e301b3.com]e4b2bd[/url] | [link=http://74645c.com]61908a[/link] | http://f226cf.com | f1bf5b | [http://feddbe.com 4d79ab]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 5:13 PM by x677219

<a href="http://6b708e.com">3072a2</a> | [url=http://1b1f76.com]ab3293[/url] | [link=http://6f3137.com]30e8ff[/link] | http://024a1e.com | 4703c1 | [http://a159cb.com 17beb8]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 5:13 PM by x677219

<a href="http://6b708e.com">3072a2</a> | [url=http://1b1f76.com]ab3293[/url] | [link=http://6f3137.com]30e8ff[/link] | http://024a1e.com | 4703c1 | [http://a159cb.com 17beb8]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Wednesday, February 18, 2009 5:14 PM by x677219

<a href="http://6b708e.com">3072a2</a> | [url=http://1b1f76.com]ab3293[/url] | [link=http://6f3137.com]30e8ff[/link] | http://024a1e.com | 4703c1 | [http://a159cb.com 17beb8]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Thursday, February 19, 2009 4:56 PM by xfff954

<a href="http://9e9cc1.com">e108ad</a> | [url=http://53b052.com]7eb196[/url] | [link=http://9e5ec6.com]8c7114[/link] | http://24d37b.com | b9d29c | [http://ac8b17.com 6ed82a]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Thursday, February 19, 2009 4:56 PM by xfff954

<a href="http://9e9cc1.com">e108ad</a> | [url=http://53b052.com]7eb196[/url] | [link=http://9e5ec6.com]8c7114[/link] | http://24d37b.com | b9d29c | [http://ac8b17.com 6ed82a]

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Sunday, March 01, 2009 6:55 PM by tljgtm

mBJf5O  <a href="gcrcgmxycvgr.com/.../a>, [url=http://ebfcscjagrre.com/]ebfcscjagrre[/url], [link=http://vsqkwshuzjqd.com/]vsqkwshuzjqd[/link], http://ynqhvkyzgoll.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, March 09, 2009 10:15 PM by ynwswzobg

RRM8RL  <a href="qscnkoqyfgif.com/.../a>, [url=http://mpfiirpxjlwm.com/]mpfiirpxjlwm[/url], [link=http://seqirnmklhdi.com/]seqirnmklhdi[/link], http://wyilvbjuuzod.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, March 16, 2009 7:41 AM by ycigxyh

N1tbjO  <a href="fcbpmpipyype.com/.../a>, [url=http://nhjwvbtbdwnl.com/]nhjwvbtbdwnl[/url], [link=http://eukuzcpivvni.com/]eukuzcpivvni[/link], http://tifiulatlfkf.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, March 16, 2009 8:41 AM by gldldmhthm

HD9oJr  <a href="llzksidsssri.com/.../a>, [url=http://gmculceyusbi.com/]gmculceyusbi[/url], [link=http://eogxerzshyng.com/]eogxerzshyng[/link], http://jmbomvfinzni.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, March 16, 2009 10:34 AM by qjheywqf

5ESPAK  <a href="anozcoakcybd.com/.../a>, [url=http://vszkxweuqdxe.com/]vszkxweuqdxe[/url], [link=http://hdwzmkcciwrm.com/]hdwzmkcciwrm[/link], http://xpwdgcuouaht.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Monday, May 04, 2009 4:18 PM by lxfssu

bWUKJt  <a href="oaspfvgshsri.com/.../a>, [url=http://lqqdedwbhndd.com/]lqqdedwbhndd[/url], [link=http://tnvossszpxzi.com/]tnvossszpxzi[/link], http://kgvfqwdzpyrn.com/

# re: Runtime Alternative to XamlReader.Load in Silverlight 2 Beta 2

Tuesday, June 30, 2009 1:38 AM by cwduzzth

gJO3Ls  <a href="kvypplpdputu.com/.../a>, [url=http://seoynvczrktb.com/]seoynvczrktb[/url], [link=http://xqrmzqssjxxp.com/]xqrmzqssjxxp[/link], http://teeuttvrovrs.com/

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Non-Commercial Edition), by Telligent Systems