WPF创建自己的类型

时间:2015-05-13 20:35:38

标签: c# wpf

我想为我的应用创建一个模板(资源字典)。我的类型继承了按钮类型,然后我可以通过以下方式调用它:

<my-custom-type inherit from button>
</my-custom-type inherit from button>

当然还有WPF。

更具体地说,我想使用上面简单的XAML语法在下面的图像中创建控件的副本。

button

1 个答案:

答案 0 :(得分:4)

这有两种方法,每种方法各有利弊:

模板允许您重复使用XAML的一部分。 (几乎总是)没有代码隐藏,你肯定不会从Button派生出来。例如,如果您希望在ItemsControl中重复使用带边框的文本框:

<DataTemplate x:Key="MyDataTemplate">
    <Border>
        <TextBox/>
    </Border>
</DataTemplate>

或者在使用ContentTemplate的按钮类中:

<Button ContentTemplate={StaticResource MyTemplate}>
</Button>

您可以在使用模板的现有控件中将其用作XTemplate="{StaticResource MyDataTemplate}"。这通常是的方式。请注意,该媒体资源的名称不会是Template,而是ItemTemplateContentTemplate或类似名称。

例外情况是您需要自定义行为,在这种情况下,您使用 UserControl 。这在技术上可以从Button继承而不是你通常不会。只有在您确定要实际执行此操作时,才应对基本控件进行子类化。创建用户控件后,语法将与您在问题中的语法类似:

<local:MyButton>
</local:MyButton>

请注意&#34;本地&#34;是一个虚构的xmlns。您的用户控件将包含您想要的任何控件,并且您可以公开&#34;属性&#34;通过依赖属性使用代码。