本文介绍了TemplatePart属性的确切用途是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了自定义控件,并且某些网站使用了TemplatePart属性,例如以下代码段,
I developed custom control and some of sites used TemplatePart attribute like the below code snippet,
[TemplatePart(Name = "Main", Type = typeof(Border))]
[TemplatePart(Name = "body", Type = typeof(ContentControl))]
public class CustomControl1 : Control
{
static CustomControl1()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));
}
public CustomControl1()
{
//EventManager.RegisterClassHandler(typeof(CustomControl1), Keyboard.KeyUpEvent, new MouseButtonEventHandler(OnMouseUp));
}
static TextBlock control;
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
control = base.GetTemplateChild("body") as TextBlock;
}
public string Content
{
get { return (string)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
// Using a DependencyProperty as the backing store for Content. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ContentProperty =
DependencyProperty.Register("Content", typeof(string), typeof(CustomControl1), new PropertyMetadata(null,new PropertyChangedCallback(MyCustom_PropertyChanged)));
private static void MyCustom_PropertyChanged(DependencyObject dobj, DependencyPropertyChangedEventArgs e)
{
control.Text = e.NewValue.ToString();
if (e.NewValue.ToString() != e.OldValue)
{
CustomControl1 CusControl = (CustomControl1)dobj;
CusControl.RaiseContentChanged();
}
}
public static readonly RoutedEvent ContentChangedEvent = EventManager.RegisterRoutedEvent("ContentChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CustomControl1));
public event RoutedEventHandler ContentChanged
{
add { AddHandler(ContentChangedEvent, value); }
remove { RemoveHandler(ContentChangedEvent, value); }
}
private void RaiseContentChanged()
{
RoutedEventArgs args = new RoutedEventArgs(ContentChangedEvent);
RaiseEvent(args);
}
}
为什么我们需要TemplatePart 属性 .没有此属性,将无法从后面的代码访问模板部分.请让我知道确切的目的
Why we need the TemplatePart Attribute . Without this attribute am able to access template part from code behind. Please let me know the exact purpose
推荐答案
有一则由 Jeff Wilcox 撰写的博客文章.
There is a blog post written by Jeff Wilcox.
还有关于代码项目的另一篇文章.
And also another post on code project.
我认为这可能对您有所帮助.
I think it might be helpful to you.
这篇关于TemplatePart属性的确切用途是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!