あなたが得ているエラーはおそらく次のとおりです。
ItemsSource を使用する前に、Items コレクションを空にする必要があります。
おそらくバインディングに問題はありません....あなたの最大の問題は無効なxamlです。
何を達成しようとしているのかはわかりませんが、水平方向のリストボックスが必要だと思いStackpanel
ますItemsPanel
。
次に、次のようになります。
<ListBox ... >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
そして、おそらくあなたはItemTemplate
<ListBox ... >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="Red" Width="150" Height="100">
<TextBlock Text="{Binding Path=programName}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
編集
質問を編集した後、新しい問題があるようです。それでも... XAML は機能しないはずです。質問で提供したものを使用した場合。無効です。
次のような結果が得られた場合:
Namespace.FileInfo
Namespace.FileInfo
Namespace.FileInfo
Namespace.FileInfo
その場合、ItemTemplate のバインディングが正しく機能していません。programName
公共の財産であることを確認してください。
バインディングのバインディング ソース プロパティとして使用するプロパティは、クラスのパブリック プロパティである必要があります。明示的に定義されたインターフェイス プロパティには、バインディングの目的でアクセスすることはできません。また、基本実装を持たない保護されたプライベート プロパティ、内部プロパティ、または仮想プロパティにもアクセスできません。
私が言ったように。私のコードは正常に動作します。
アップデート
List<FileInfo>
のはずListBox
ですDataContext
...おそらくそうです...この結果が得られたからです。確認する必要があるのは、FileInfo
クラス内がprogramName
パブリック プロパティであることです。
このようなものでなければなりません。
public class FileInfo : ObservableObject
{
private string _programName;
public string programName
{
get{ return this._programName;}
set
{
this._programName = value;
RaisePropertyChanged(() => this.programName);
}
}
}