从代码设置silverlight模板?
答
幸运的是,您需要附加到控件的加载事件。此时您可以分配给模板属性。您可以从资源字典中检索模板。
例如,让我们假设你有一个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>
在用户控件的代码隐藏你有这样的代码: -
void txt_Loaded(object sender, RoutedEventArgs e)
{
((TextBox)sender).Template = (ControlTemplate)Resources["MyTextBox"];
}
在这种情况下,我使用文本框本身的加载事件,但是,你也可以使用UserControls加载事件。
void Page_Loaded(object sender, RoutedEventArgs e)
{
txt.Template = (ControlTemplate)Resources["MyTextBox"];
}