Windows手机自定义用户控件与模板支持
本文关键字:支持 控件 手机 自定义 用户 Windows | 更新日期: 2023-09-27 18:18:20
我正在制作一个自定义用户控件,我希望该控件可重用,并且控件的一部分可用于添加新控件。我想做的是在自定义用户控件中的模板,用户可以在其中添加新内容。
我用的是windows phone 8
我该怎么做?
从"添加新项"菜单中添加新的模板控件。你应该在Themes
文件夹下得到Generic.xaml
文件。
在Generic.xaml
中,您有自定义控件的样式:
<Style TargetType="local:CustomControl1">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:CustomControl1">
Write your control xaml here
<Border x:Name="BorderNameTest"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Button IsEnabled="{TemplateBinding IsFancyLookEnabled}"></Button>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
您还将有.cs
文件用于您的自定义控件。从你的自定义控件模板xaml中使用控件(在代码中),你需要在你的"控件类"上使用[TemplatePart]
属性。片段:
[TemplatePart(Name = BorderTestTemplatePartName, Type = typeof(Border))]
public sealed class CustomControl1 : Control
{
private const string BorderTestTemplatePartName = "BorderNameTest";
private Border _myBorder;
public static readonly DependencyProperty IsFancyLookEnabledProperty = DependencyProperty.Register(
"IsFancyLookEnabled", typeof (bool), typeof (CustomControl1), new PropertyMetadata(default(bool)));
public bool IsFancyLookEnabled
{
get { return (bool) GetValue(IsFancyLookEnabledProperty); }
set { SetValue(IsFancyLookEnabledProperty, value); }
}
public CustomControl1()
{
this.DefaultStyleKey = typeof(CustomControl1);
}
protected override void OnApplyTemplate()
{
_myBorder = GetTemplateChild(BorderTestTemplatePartName) as Border;
// attach events etc. (you can detach them using for example Unloaded event)
base.OnApplyTemplate();
}
}
此外,我还向您展示了如何在控件上公开属性(因此您的控件用户可以编写<namespace:SuperControl IsFancyLookEnabled="True">
)。您可以创建依赖属性(如代码片段所示),您可以在xaml中使用TemplateBinding
-或者仅在代码中使用。