【问题标题】:Expose an inner depedency property to the main user control向主用户控件公开内部依赖属性
【发布时间】:2011-03-14 16:39:28
【问题描述】:

我在 Silverlight 工作。 制作了一个名为 TextBoxWithButton 的新用户控件。 现在我想为我的新控件添加一个名为 TextBoxBackground 的新属性。

我这样做了:

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

这很好用,但是当我尝试为这个属性设置动画时,我得到了一个异常。 我认为这是因为 TextBoxWithButton 应该被定义为一个依赖属性,但我不知道该怎么做。

【问题讨论】:

  • @Snowbear3 附加属性 ?你确定吗 ?我几乎可以肯定它是一个能够参与动画的依赖属性。
  • 附加属性只是一种特定类型的依赖属性。两者都适合动画,因为您可以为任何 DP 制作动画。
  • 当然,它是dep 属性。这是我的想法:(

标签: silverlight custom-controls dependency-properties


【解决方案1】:

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

一旦您将此设置作为依赖属性,只需将您的(内部)TextBox.Background 绑定到“本地”TextBoxBackground 属性(在 xaml 中)。然后,您可以根据需要为 UserControl 的 TextBoxBackground 属性设置动画,“inner”属性也会发生变化。

【讨论】:

  • 我将 TextBoxBackground 注册为 DP。创建了属性包装器。在 XAML 中做了 Background="{Binding TextBoxBackground}"。但是还是不行。
  • @Yaron:除非您的数据上下文是您自己,否则绑定可能不会起作用...否则,您需要指定 RelativeSource(请参阅:msdn.microsoft.com/en-us/library/dd553635(v=vs.95).aspx
  • 我将 XMAL 更改为 Background="{Binding RelativeSource={RelativeSource Self}, Path=TextBoxBackground}" 但文本框的背景仍然没有改变
猜你喜欢
  • 1970-01-01
  • 2011-02-09
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
相关资源
最近更新 更多