Pet*_*ter 3 silverlight templates
如果我的模板放在ResourceDictionary中,如何从代码中设置control.Template?
有条不紊地,您需要附加到控件的加载事件.此时,您可以分配给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)