2011-03-14 85 views
0

我正在Silverlight中工作。 创建了一个名为TextBoxWithButton的新UserControl。 现在我想添加一个新的属性到我的新控件称为TextBoxBackground。向主用户控件公开内部依赖属性

我这样做:

public partial class TextBoxWithButton : UserControl 
{ 
     public Brush TextBoxBackground 
     { 
      get{return textBox.Background;} 
      set{textBox.Background = value;}   
     } 
} 

这工作得很好,但是当我尝试动画这个属性我得到一个异常。 我认为这是因为TextBoxWithButton应该被定义为一个依赖属性,但我不知道如何做到这一点。

+0

@ Snowbear3附属物?你确定 ?我几乎肯定它是一个能够参与动画的依赖项属性。 – 2011-03-14 16:52:11

+0

附加属性只是特定类型的依赖属性。无论是动画,都可以,因为您可以为任何DP制作动画。 – 2011-03-14 16:54:06

+0

当然,这是'dep'属性。这是一个从我身边的思考:( – Snowbear 2011-03-14 18:26:19

回答

0

你需要把它变成一个依赖属性。有关实施DP的详细信息,请参阅Custom Dependency Properties

将此设置作为依赖项属性后,将您的(内部)TextBox.Background绑定到“本地”TextBoxBackground属性(在xaml中)。然后,您可以根据需要为UserControl的TextBoxBackground属性设置动画,并且“内部”属性也会更改。

+0

我注册TextBoxBackground作为DP创建属性包装,并在XAML做Background =“{Binding TextBoxBackground}”。但它仍然不会工作。 – 2011-03-14 17:01:33

+0

@Yaron:绑定可能除非您的数据上下文是您自己,否则不会工作......否则,您需要指定RelativeSource(请参阅:http://msdn.microsoft.com/en-us/library/dd553635(v=vs.95) .aspx) – 2011-03-14 17:05:38

+0

我将XMAL更改为Background =“{Binding RelativeSource = {RelativeSource Self},Path = TextBoxBackground}”但仍然,文本框的背景不会更改 – 2011-03-14 17:15:23