Silverlight 4 自定义控件属性设置

来源:互联网 发布:淘宝买家佣金怎么查 编辑:程序博客网 时间:2024/06/04 19:44

最近在写一个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",
typeof(string
),
typeof
(MySilverButton),
new PropertyMetadata("默认属性值
));
}

 

将注册的回调函数取了。去了之后怎么更改变量呢?

这时候我在onApplyTemplate()方法中进行设置,

  TextBlock tb = base.GetTemplateChild("textBlock1") as TextBlock;

                tb.Text = content;

两行代码搞定。

不知道这样做会带来什么问题,没有做过什么测试。

但是一般的功能没问题。

如果你也向我一样,那就用吧

 

 

 

 

 

 

 

 

 

原创粉丝点击