最近在写一个silverlight 自定义控件的时候,在设置属性的时候遇到些问题。
上网搜索了一番,很多博客都引用博客园中万事大吉的一个silverlight自定义空间开发系列教程。大致方法是
public static DependencyProperty TextProperty;
public string MyText
{
get
{
return (string)base.GetValue(TextProperty);
}
set
{
base.SetValue(TextProperty,value);
}
}
static MySilverButton()
{
TextProperty = DependencyProperty.Register("MyText",
typeof(string),
typeof(MySilverButton),
new PropertyMetadata("默认属性值",new PropertyChangedCallback(MySilverButton.OnTextPropertyChanged)));
}
在上面大家也看到了,这里注册了一个回调函数,剩下的事情就是这个回调函数的事 了。private static void OnTextPropertyChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
{
(d as MySilverButton).OnTextPropertyChanged(e);
}
void OnTextPropertyChanged(DependencyPropertyChangedEventArgs e)
{
try
{
TextBlock BgTextBlock = this.GetTemplateChild("ButtonCaption") as TextBlock;
BgTextBlock.Text = e.NewValue as string;
}
catch (Exception ex)
}
我在我的空间里定义了5个属性,那么。。。。。。。
我的解决方法是, 在onApplyTemplate()方法中进行设置。
public static DependencyProperty TextProperty;
public string MyText
{
get
{
return (string)base.GetValue(TextProperty);
}
set
{
base.SetValue(TextProperty,value);
}
}
这部分不动
static MySilverButton()
{
TextProperty = DependencyProperty.Register("MyText",
new PropertyMetadata("默认属性值));
}
这时候我在onApplyTemplate()方法中进行设置,
TextBlock tb = base.GetTemplateChild("textBlock1") as TextBlock;
tb.Text = content;
两行代码搞定。
不知道这样做会带来什么问题,没有做过什么测试。
但是一般的功能没问题。
如果你也向我一样,那就用吧
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。