XAMLとVisual Basicの関係
XAMLでUI部分を書き、イベントなどのロジック部分はVBやC#などのコードで記述する。この観点から見た場合、XAMLとVBはASP.NETにおけるaspxファイルとコードファイルの関係に非常に似ていると思います。UIと実装を分離することで、開発者とUIをデザインする人の協業を可能にするというメリットも同じです。
しかしながら、XAMLはVBとはまったく異なるものというわけではなく、むしろどちらもオブジェクト構造を定義できるという点では近い位置にあるものと考えることができます。
http://akari.kabe.co.jp/MagSite/Content.modf?id=20060522095527
つまり、XAMLで書けることはすべてVBでも書けます。たとえば、新規にWinFX Windows Applicationを作成した場合の「Window1.xaml」の内容は下記のようになっていますが、
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="XAML" Height="300" Width="300"
>
<Grid>
</Grid>
</Window>
これと同じWindowをXAMLを一切使わずにVBから表示させるには、下記のよう記述します。xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="XAML" Height="300" Width="300"
>
<Grid>
</Grid>
</Window>
Dim wpfWindow As New System.Windows.Window()
Dim myGrid As New System.Windows.Controls.Grid()
wpfWindow.Title = "Visual Basic"
wpfWindow.Height = "300"
wpfWindow.Width = "300"
wpfWindow.Content = myGrid
wpfWindow.Show()
もちろん、XAMLで書いたほうが格段に簡単で分かりやすいのでわざわざVBで書く必要はありませんが、VBだけで書くことも可能であることがお分かりいただけるかと思います。Dim myGrid As New System.Windows.Controls.Grid()
wpfWindow.Title = "Visual Basic"
wpfWindow.Height = "300"
wpfWindow.Width = "300"
wpfWindow.Content = myGrid
wpfWindow.Show()
なお、従来のWindowsフォームとWPFには、非常に似た名前や完全に同じ名前のクラスが多数存在します。XAMLで書いているぶんには何も意識する必要はありませんが、コードで書く場合には注意が必要です。
以下は、ほんの一例です。
Windowsフォーム