我有以下XAML代码
<ListBox x:Name="TrackedProgramList" Height="145" Width="605" ItemsSource=" {Binding}" >
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=programName}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox>
我正在将List绑定到Listbox的ItemsSource。 List包含“FileInfo”对象。 FileInfos是一个具有某些属性的对象,如“programName”,“manufacturer”等。
现在的问题是列表只显示如下内容:
Namespace.FileInfo
Namespace.FileInfo
Namespace.FileInfo
...
所以我认为路径不正确。
答案 0 :(得分:1)
你得到的错误可能是:
在使用ItemsSource之前,项目集合必须为空。
可能绑定没问题....你的bigest问题是无效的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
的{{1}} ...它可能是......因为你得到了这个结果。您应该检查的是DataContext
类FileInfo
是公共财产。
它应该是这样的。
programName