2014-11-05 2 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> 

Тогда у меня есть некоторый код, который добавляет коллекцию предметов к ItemsSource этого ListBox, но я не могу этого сделать, так как 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, чтобы каждый элемент был точно таким, каким вы хотите. Однако это совершенно другой вопрос.

Чтобы узнать больше об этих вещах, вы можете прочитать страницу Data Binding Overview и Data Templating Overview на MSDN.

+0

Уход. Я добавил ItemsSource = "{Binding DbListProperty}" в ListBox сейчас, но я не могу найти его из файла MainWindow.xaml.cs? – Khaine775

+0

Прочтите [Обзор привязки данных] (http://msdn.microsoft.com/en-us/library/ms752347 (v = vs.110) .aspx) в MSDN. – Sheridan