I'm not sure if this helps, but just in case. To create buttons using a control template in code behind (not XAML) I've done it like this:
load the control template from an xml definition (below is a link to the source)
byte[] bytes = ReadBytesFromStream("BestBuyRemix.BL.buttontemplate.xml");
string buttonTemplate = "";
UTF8Encoding encoding = new UTF8Encoding();
buttonTemplate = encoding.GetString(bytes.ToArray(), 0, (int)bytes.Length);
create the button and add it to the visual tree (in this case a wrap panel)
string onebutton = string.Format(buttonTemplate, mnu.CatItemName, mnu.CatItemImage,
"{StaticResource buttonStyle1}",
"{StaticResource CatItemNameBlock}", "{StaticResource ThumbNailPreview}",
ictr.ToString());
ictr += 1;
Button bt = (Button)XamlReader.Load(onebutton);
bt.Tag = mnu.CatItemPageUri;
bt.Click += new RoutedEventHandler(bt_Click);
Wrappable.Children.Add(bt);
I wrote a post on my blog about the Best Buy Remix API which uses this to build a product list in the details page. It has a link to the Silverlight source. In case you're interested.
blog post link