2009-04-25 8 views
1

Ich versuche, eine Schaltfläche in Silverlight verwenden eine Steuerelementvorlage verwenden, um die Art und Weise ändern, wie es aussieht.Dynamic Control Template in Silverlight

Ich muss dies dynamisch in Code (nicht XAML Markup) tun. Das Button-Objekt verfügt über eine Template-Eigenschaft, der Sie eine ControlTemplate zuweisen können.

Aber wie steckst du UI-Elemente in die ControlTemplate? (In WPF gibt es eine VisualTree-Eigenschaft, aber keine solche Eigenschaft existiert in Silverlight)

Antwort

2

Ich bin mir nicht sicher, ob dies hilft, aber nur für den Fall. So erstellen Sie Tasten, um eine Steuerelementvorlage in Code hinter (nicht XAML) Ich habe es so gemacht:

  1. Last der Steuervorlage aus einer XML-Definition (unten ist ein Link auf die Quelle)

    byte[] bytes = ReadBytesFromStream("BestBuyRemix.BL.buttontemplate.xml"); 
        string buttonTemplate = ""; 
        UTF8Encoding encoding = new UTF8Encoding(); 
        buttonTemplate = encoding.GetString(bytes.ToArray(), 0, (int)bytes.Length); 
    
  2. die Schaltfläche erstellen und an die visuelle Struktur hinzufügen (in diesem Fall eine Wickelplatte)

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); 

Ich schrieb einen Beitrag auf meinem Blog über den Best Buy Remix-API, die diese Produktliste in der Detailseite bauen verwendet. Es hat eine Verbindung zur Silverlight-Quelle. Falls Sie interessiert sind.
blog post link