如何创建包含两个不同控件的自定义控件?

时间:2013-01-30 19:24:38

标签: wpf class custom-controls

我已经制作了一个包含两个类的CustomControl。一个派生自Label,另一个派生自TextBox。但我不能让一个人与另一个人沟通。例如,当用户按下TextBox上的Enter键时,无论文本在其中,都必须复制到Label
像这个伪代码:

protected override void OnKeyDown(KeyEventArgs e)
            {
                if (e.Key == Key.Return)
                {
                    TheLabel.text = TheTextBox.text;
                }
            }

但是我不能操纵另一个控件。因为每个人都在这个单独的类中:

public class TheLabel : Label{...}  

public class TheTextBox : TextBox{...}

SO 有没有一种特殊的方法来创建CustomControl,包含两个或更多控件,相互通信?

2 个答案:

答案 0 :(得分:1)

您可以使用两种方法。

首先,您可以使用合成,在合成中创建一个结合了两个单独控件的类:

    public class CompositeClass {
              private TheLabel  _label;
              private TheTextBox _textbox;
}

或者,您可以将对一个类的对象的引用传递给另一个类,以便它可以在事件处理程序中操作该对象:

公共类TheLabel:标签{

   TheTextBox _textbox;

  public TheLabel(TheTextBox t) {
       _textbox = t;
  }

}

希望这有帮助。

答案 1 :(得分:0)

您可以在每个自定义控件上使用DependancyProperty链接信息。然后每个依赖属性也将订阅更改事件。当数据在一个中更改时,事件将触发,您可以根据需要在另一个控件中进行适当的处​​理。