2014-11-05 23 views
0

我是新來的WPF,我有這個ListBox,我想用特定的ListBoxItem實例化,所以用戶知道如何處理ListBox。覆蓋ListBoxitem?

<ListBox Name="DbListBox" 
      Grid.Column="3" 
      HorizontalAlignment="Left" 
      Height="246" 
      Margin="0,99,0,0" 
      Grid.Row="1" 
      VerticalAlignment="Top" 
      Width="211" 
      SelectionMode="Single" 
      SelectedItem="{Binding Path=selectedDB,Mode=TwoWay}" 
      AllowDrop="True" 
      Drop="DbListBox_Drop"> 
     <ListBoxItem Name="ListBoxItem" FontStyle="Italic">Drag .db file here or add below</ListBoxItem> 
    </ListBox> 

然後,我有一些代碼,將項添加到這個ListBox的的ItemsSource的集合,但我不能這樣做,因爲ItemsSource時不爲空

DbListBox.ItemsSource = DbCollection; 

我的問題是,如何我可以啓動帶有插入項目的ListBox,然後當DbCollection被添加到它時,它只會覆蓋第一個ListBoxItem?

回答

0

當正確使用WPF,我們通常有這樣的事情,其中​​一個集合屬性將綁定到ListBox.ItemsSource屬性數據:

<ListBox ItemsSource="{Binding SomeCollectionProperty}" /> 

一旦我們有了這個XAML,我們並不需要再次觸摸ListBox,因爲我們可以從ListBox添加或刪除項目從綁定集合數據,他們會奇蹟般地出現(或消失):

SomeCollectionProperty.Add(new SomeDataType()); 
SomeCollectionProperty.Remove(someItemFromCollection); 

這裏使用的SomeDataType取決於你......這取決於你想在你的項目中顯示什麼。如果它只是一個普通的string例如,那麼你可以簡單地這樣對你最初的項目添加到集合:

SomeCollectionProperty.Add("Drag .db file here or add below"); 

如果你想使該項目顯得與衆不同的人,那麼你就需要數據綁定具有Text屬性和FontStyle屬性的自定義類。您可以將數據綁定到DataTemplate中的這些屬性,以便按照您的需要設計每個項目。但是,這是一個完全不同的問題。

要了解關於這些內容的更多信息,可以閱讀MSDN上的Data Binding OverviewData Templating Overview頁面。

+0

整潔。我已經將ItemsSource =「{Binding DbListProperty}」添加到ListBox中,但我似乎無法從我的MainWindow.xaml.cs文件中找到它? – Khaine775 2014-11-05 12:21:21

+0

閱讀MSDN上的[數據綁定概述](http://msdn.microsoft.com/zh-cn/library/ms752347(v = vs.110).aspx)頁面。 – Sheridan 2014-11-05 16:05:53