2009-04-25 3 views
1

Я пытаюсь создать кнопку в Silverlight, используя шаблон управления, чтобы изменить способ его отображения.Шаблон динамического управления в Silverlight

Мне нужно сделать это динамически в коде (а не разметке xaml). Объект Button имеет свойство Шаблон, которому вы можете назначить ControlTemplate.

Но как вы набираете элементы пользовательского интерфейса в ControlTemplate? (В WPF есть свойство VisualTree, но такого свойства в Silverlight нет)

ответ

2

Я не уверен, что это помогает, но на всякий случай. Для того, чтобы создать кнопки с помощью шаблона управления в коде позади (не XAML) Я сделал это так:

  1. нагрузки шаблон управления из определения XML (ниже есть ссылка на источник)

    byte[] bytes = ReadBytesFromStream("BestBuyRemix.BL.buttontemplate.xml"); 
        string buttonTemplate = ""; 
        UTF8Encoding encoding = new UTF8Encoding(); 
        buttonTemplate = encoding.GetString(bytes.ToArray(), 0, (int)bytes.Length); 
    
  2. создать кнопку и добавить его в визуальном дереве (в этом случае панель обруча)

строка 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); 

я написал пост на моем блоге о API Best Buy Remix, которая использует это, чтобы создать список продуктов на странице деталей. Он имеет ссылку на источник Silverlight. В случае, если вас это интересует.
blog post link

Смежные вопросы