public abstract class DialogBox
public abstract void Changed(UIControl control);
protected DialogBox owner;
public UIControl(DialogBox owner)
public class ListBox: UIControl
private string selection;
this.owner.Changed(this);
public ListBox(DialogBox owner): base(owner)
public class TextBox: UIControl
this.owner.Changed(this);
public TextBox(DialogBox owner): base(owner)
public class Button: UIControl
this.owner.Changed(this);
public Button(DialogBox owner): base(owner)
public class ArticleDialogBox: DialogBox
public ArticleDialogBox()
articleListBox = new ListBox(this);
titleTextBox = new TextBox(this);
saveButton = new Button(this);
public override void Changed(UIControl control)
titleTextBox.Content = articleListBox.Selection;
saveButton.Enabled = true;
else if(control is TextBox)
saveButton.Enabled = String.IsNullOrEmpty(titleTextBox.Content);
public void SimulateUserInteraction()
articleListBox.Selection = "Article 1";
Console.WriteLine("TextBox: " + titleTextBox.Content);
Console.WriteLine("Button: " + saveButton.Enabled);
public static void Main()
var dialog = new ArticleDialogBox();
dialog.SimulateUserInteraction();