0

我已经制作了一个CustomControl包含两个类。一个源自 ,Label另一个源自TextBox。但我不能让一个人与另一个人交流。例如,当用户按 Enter 键时TextBox,无论其中的文本是什么,都必须复制到Label.
像这样的伪代码:

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

但我无法从另一个控件内部操纵一个控件。因为每个都在它的单独类中,如下所示:

public class TheLabel : Label{...}  

public class TheTextBox : TextBox{...}

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

4

2 回答 2

1

您可以使用两种方法。

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

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

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

公共类TheLabel:标签{

   TheTextBox _textbox;

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

}

希望这可以帮助。

于 2013-01-30T19:37:33.173 回答
0

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

于 2013-01-30T19:36:46.190 回答