微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight 4 自定义控件属性设置

最近在写一个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)

*

     {

*

     string ks = ex.ToString();
}

 

 

大家也看到了,简简单单一个属性需要这么多代码

我在我的空间里定义了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] 举报,一经查实,本站将立刻删除。

相关推荐