你所得到的錯誤大概是:
項目集合必須在使用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
是公共財產。
您用作綁定綁定源屬性的綁定屬性必須是您的類的公共屬性。顯式定義的接口屬性不能用於綁定目的,也不能訪問沒有基本實現的受保護的,私有的,內部的或虛擬的屬性。
正如我所說。我的代碼工作正常。
UPDATE
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);
}
}
}
'但我得到以下錯誤'什麼錯誤....? – DGibbs 2013-05-13 10:30:17
一個猜測,你從來沒有提到的錯誤,但看看BindingList – 2013-05-13 10:32:58
編輯後。那麼......似乎不太可能...在ListBox和/ ListBox標籤之間應該有Items ...而不是DataTemplate!另外你正在使用ItemsSource,所以應該沒有任何東西。 – 2013-05-13 11:26:02