如果我的模板放置在 ResourceDictionary 中,如何从代码中设置 control.Template?
从根本上讲,您需要附加到控件加载事件。此时您可以分配给 Template 属性。您可以从资源字典中检索模板。
例如,假设您有一个包含 TextBox 的 UserControl,您希望在 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>
在 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"];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)