ループが1回だろうが7回だろうが関係なく、ListBoxItemにContentを設定して初期化するだけで発生するものです。
Dim item = New ListBoxItem With {.Content = ""}
ListBoxItemが生成されるときにListBoxItemのテーマStyleが適用されて、その適用されたStyleにあるSetterでHorizontalContentAlignmentとVerticalContentAlignmentにバインディングが設定されます。
このバインディングはRelativeSource AncestorTypeでLitBoxItemの親をさかのぼってItemsControl(=ListBox)を探すようになっています。
ListBoxがVirtualizingPanelを使用して仮想化していると、表示範囲外になっているListBoxItemは実際には配置されず、配置されていないので親が無く、そのためItemsControlも見つかりません。
つまり、エラーメッセージにあるように、このバインディングでItemsControlが見つかりませんでしたというエラーです。
# Contentが設定されると大きさや配置の計算が発生するからかもしれない
このエラーを出したくないのであれば、
- 仮想化をさせない。
<ListBox x:Name="LI3" VirtualizingPanel.IsVirtualizing="false" />
あるいは、Contentの設定をスタイルの適用と生成が終わった後に遅延させる
Dim l2 As New List(Of Myclass1)
Dim i As Integer
For i = 0 To 6
Dim item As New Myclass1() 'With {.Content = i.ToString}
AddHandler item.Loaded, Sub(s, e)
item.Content = i.ToString()
End Sub
l2.Add(item)
Next
あるいはデフォルトで適用されるスタイルを適用させない。
Dim item As New Myclass1() With {.OverridesDefaultStyle = True, .Content = i.ToString}