我想为我的应用创建一个模板(资源字典)。我的类型继承了按钮类型,然后我可以通过以下方式调用它:
<my-custom-type inherit from button>
</my-custom-type inherit from button>
当然还有WPF。
更具体地说,我想使用上面简单的XAML语法在下面的图像中创建控件的副本。
答案 0 :(得分:4)
这有两种方法,每种方法各有利弊:
模板允许您重复使用XAML的一部分。 (几乎总是)没有代码隐藏,你肯定不会从Button
派生出来。例如,如果您希望在ItemsControl
中重复使用带边框的文本框:
<DataTemplate x:Key="MyDataTemplate">
<Border>
<TextBox/>
</Border>
</DataTemplate>
或者在使用ContentTemplate
的按钮类中:
<Button ContentTemplate={StaticResource MyTemplate}>
</Button>
您可以在使用模板的现有控件中将其用作XTemplate="{StaticResource MyDataTemplate}"
。这通常是的方式。请注意,该媒体资源的名称不会是Template
,而是ItemTemplate
或ContentTemplate
或类似名称。
例外情况是您需要自定义行为,在这种情况下,您使用 UserControl 。这在技术上可以从Button
继承而不是你通常不会。只有在您确定要实际执行此操作时,才应对基本控件进行子类化。创建用户控件后,语法将与您在问题中的语法类似:
<local:MyButton>
</local:MyButton>
请注意&#34;本地&#34;是一个虚构的xmlns。您的用户控件将包含您想要的任何控件,并且您可以公开&#34;属性&#34;通过依赖属性使用代码。