覆盖ListBoxitem?

时间:2014-11-05 11:04:10

标签: c# wpf

我是WPF的新手,我有这个ListBox,我想用特定的ListBoxItem实例化,所以用户知道如何处理ListBox。

 <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?

1 个答案:

答案 0 :(得分:0)

正确使用WPF时,我们通常会有类似这样的内容,其中collection属性是绑定到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页面。