XAMLとVisual Basicの関係

XAMLでUI部分を書き、イベントなどのロジック部分はVBC#などのコードで記述する。この観点から見た場合、XAMLVBASP.NETにおけるaspxファイルとコードファイルの関係に非常に似ていると思います。UIと実装を分離することで、開発者とUIをデザインする人の協業を可能にするというメリットも同じです。
しかしながら、XAMLVBとはまったく異なるものというわけではなく、むしろどちらもオブジェクト構造を定義できるという点では近い位置にあるものと考えることができます。

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から表示させるには、下記のよう記述します。
        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だけで書くことも可能であることがお分かりいただけるかと思います。
なお、従来のWindowsフォームとWPFには、非常に似た名前や完全に同じ名前のクラスが多数存在します。XAMLで書いているぶんには何も意識する必要はありませんが、コードで書く場合には注意が必要です。
以下は、ほんの一例です。


Windowsフォーム

  • system.drawing.dll
    • System.Drawing.Drawing2D.LinearGradientBrush
    • System.Drawing.Bitmap
    • System.Drawing.Point
  • system.windows.forms.dll



WPF

  • presentationcore.dll
    • System.Windows.Media.LinearGradientBrush
    • System.Windows.Media.Imaging.BitmapImage
  • windowsbase.dll
  • presentationframework.dll