3
如何將代碼中的control.Template設置爲ResourceDictionary?從代碼設置silverlight模板?
如何將代碼中的control.Template設置爲ResourceDictionary?從代碼設置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"];
}