Динамический шаблон управления в Silverlight - PullRequest
1 голос
/ 25 апреля 2009

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

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

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

1 Ответ

2 голосов
/ 25 апреля 2009

Я не уверен, поможет ли это, но на всякий случай. Чтобы создать кнопки с использованием шаблона элемента управления в коде позади (не 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. создайте кнопку и добавьте ее в визуальное дерево (в данном случае панель переноса)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...