コレクションオブジェクトをXAML側でバインディングする方法

ContentPresenter.comというサイトにて、WPFに関するチュートリアルビデオがいくつか公開されています。

http://www.contentpresenter.com/



公開されている動画は、解説は英語であるものの実際の画面のキャプチャ動画になっていますで画面を見るだけでも結構な部分を理解できます。
もっとも最近公開された動画はこちらです。

Binding to CLR Collections in XAML(wmv形式の動画)



Listクラスを継承したクラスを作成し、xlmnsそのクラスを参照できるようにし、リソースでそのクラスをインスタンス化するというものです。コードは下記のようになります(動画ではC#が使われていますが、ここで紹介するコードはVBです)。


Visual Basic

' Interaction logic for Window1.xaml
Partial Public Class Window1
    Inherits System.Windows.Window
 
    Public Sub New()
        InitializeComponent()
    End Sub
 
End Class
 
Public Class Processes
    Inherits List(Of String)
 
    Public Sub New()
        Dim plist As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses
        For Each p As System.Diagnostics.Process In plist
            Me.Add(p.ProcessName)
        Next
    End Sub
 
End Class


XAML
<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:ProcessViewer"
    Title="ProcessViewer" Height="800" Width="300"
    >
  <Window.Resources>
    <src:Processes x:Key="p"/>
  </Window.Resources>
    <Grid>
      <ListBox ItemsSource="{StaticResource p}"/>
    </Grid>
</Window>


ほかの動画とても参考になると思いますので、時間のある方はぜひ見ていただきたいと思います。