首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否覆盖ListBoxitem?

是否覆盖ListBoxitem?
EN

Stack Overflow用户
提问于 2014-11-05 19:04:10
回答 1查看 249关注 0票数 0

我是第一次接触WPF,我有这个ListBox,我想用一个特定的ListBoxItem来实例化它,这样用户就知道如何处理这个ListBox。

代码语言:javascript
复制
 <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不是空的

代码语言:javascript
复制
DbListBox.ItemsSource = DbCollection;

我的问题是,如何启动先插入项的ListBox,然后在添加DbCollection时,它会简单地覆盖第一个ListBoxItem?

EN

回答 1

Stack Overflow用户

发布于 2014-11-05 19:17:48

当正确使用WPF时,我们通常会有类似这样的东西,其中集合属性将是绑定到ListBox.ItemsSource属性的数据:

代码语言:javascript
复制
<ListBox ItemsSource="{Binding SomeCollectionProperty}" />

一旦我们有了这个XAML,我们就不需要再接触ListBox了,因为我们可以在数据绑定集合中添加或删除项,它们就会神奇地从ListBox中出现(或消失

代码语言:javascript
复制
SomeCollectionProperty.Add(new SomeDataType());
SomeCollectionProperty.Remove(someItemFromCollection);

这里使用的SomeDataType由您决定...这取决于您要在项目中显示的内容。例如,如果它只是一个普通的string,那么您可以简单地这样做,将您的初始项添加到集合中:

代码语言:javascript
复制
SomeCollectionProperty.Add("Drag .db file here or add below");

如果您想让该项看起来不同于其他项,则需要对具有Text属性和FontStyle属性的自定义类进行数据绑定。您可以在DataTemplate中对这些属性进行数据绑定,以将每个项目设计为您想要的样子。然而,这是一个完全不同的问题。

要了解有关这些内容的更多信息,请阅读MSDN上的Data Binding OverviewData Templating Overview页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26755623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档