从代码中设置silverlight模板?

Pet*_*ter 3 silverlight templates

如果我的模板放在ResourceDictionary中,如何从代码中设置control.Template?

Ant*_*nes 9

有条不紊地,您需要附加到控件的加载事件.此时,您可以分配给Template属性.您可以从资源字典中检索模板.

例如,假设您有一个UserControl,其中包含一个TextBox,您希望在UserControl的代码中为其提供不同的模板,并且该模板存储在UserControls Resources属性中.

<UserControl xmlns="Namespaces removed for clarity" >
  <UserControl.Resources>
     <ControlTemplate TargetType="TextBox" x:Key="MyTextBox">
       <!-- template mark up here -->
     </ControlTemplate>
  <UserControl.Resources>
  <TextBox x:Name="txt" Loaded="txt_loaded" />
</UserControl>
Run Code Online (Sandbox Code Playgroud)

在UserControl的代码隐藏中,您将拥有以下代码: -

void txt_Loaded(object sender, RoutedEventArgs e)
{
    ((TextBox)sender).Template = (ControlTemplate)Resources["MyTextBox"];
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我使用文本框自己加载的事件,但是,您也可以使用UserControls加载的事件.

void Page_Loaded(object sender, RoutedEventArgs e)
{
    txt.Template = (ControlTemplate)Resources["MyTextBox"];
}
Run Code Online (Sandbox Code Playgroud)