Attachedプロパティ
WPFでは、Attachedプロパティという新しい種類のプロパティが新たに追加されています。
Attachedプロパティは、親から子へ提供されるプロパティです。たとえば、System.Windows.Controls名前空間のCanvasクラスのメンバ一覧を見ると、下記の4つのAttachedプロパティが存在します。
XAMLでAttachedプロパティを設定する場合、下記のように記述します。
XAML
これと同じことをコードで記述する場合、下記のようになります。
Visual Basic
Dim myCanvas As New Canvas, myButton As New Button
myButton.Content = "Hello World"
myCanvas.Children.Add(myButton)
Canvas.SetTop(myButton, 100.0)
Canvas.SetLeft(myButton, 100.0)
Me.Content = myCanvas
コードで親と子の関係を作るには、CanvasクラスにあるChildrenプロパティを使います。myButton.Content = "Hello World"
myCanvas.Children.Add(myButton)
Canvas.SetTop(myButton, 100.0)
Canvas.SetLeft(myButton, 100.0)
Me.Content = myCanvas
Attachedプロパティ設定する場合には、そのためのSet***メソッドが用意されていますのでこれらを使って設定します。これらのメソッドはSharedメソッドであることに注意してください。
Buttonの「Hello World」という文字列は、TextプロパティではなくContentプロパティに設定しています。System.Windows.Controls.ButtonクラスにTextプロパティはありません。ContentプロパティはObject型なので、上記のように直接文字列を設定することもできますが、コンテナ系(試した限りではPanelクラスを継承しているクラス)のオブジェクトを設定できます。
たとえば、下記のように記述すればTextBoxを中に持ったButtonが表示されます。
Dim myCanvas As New Canvas, myButton As New Button
Dim myDockPanel As New DockPanel, myTextBox As New TextBox
myTextBox.Text = "GrapeCity"
myDockPanel.Children.Add(myTextBox)
myButton.Content = myDockPanel
myButton.Width = 100
myButton.Height = 30
myCanvas.Children.Add(myButton)
Me.Content = myCanvas
Dim myDockPanel As New DockPanel, myTextBox As New TextBox
myTextBox.Text = "GrapeCity"
myDockPanel.Children.Add(myTextBox)
myButton.Content = myDockPanel
myButton.Width = 100
myButton.Height = 30
myCanvas.Children.Add(myButton)
Me.Content = myCanvas