c# - 将自定义对象数据显示到 ListBox WPF

标签 c# wpf

我在 WPF 应用程序中有一个列表框:

<ListBox HorizontalAlignment="Left" Margin="16,37,0,16" Name="lbEmpList" Width="194" SelectionChanged="lbEmpList_SelectionChanged" FontSize="12" SelectionMode="Single">

</ListBox>

我有三个按钮:添加、删除和更新,它们将向列表框添加、删除和更新项目。我将项目添加到 ListBox 我的自定义类对象名称 objEmployee。 这个自定义类包含几个属性:Id、Name、Address。
但是,当我将对象添加到 ListBox 时,它会将项目显示为

<Namespace Name>.<Custom Object name>

如何在设计或运行时将任何对象属性绑定(bind)到此 ListBox 以实现我的功能?

最佳答案

几个选项:

第一个也是最简单的选项是设置 ListBox 的 DisplayMemberPath属性到自定义对象的属性。因此,如果您的 Employee 类具有 LastName 属性,您可以这样做:

<ListBox DisplayMemberPath="LastName" ... />

如果您想更好地控制为每个项目显示的数据(包括自定义布局等),那么您需要定义一个 DataTemplate对于列表框中的每个项目。最简单的方法是简单地设置 ListBox 的 ItemTemplate属性:

<ListBox ...>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding FirstName}" />
                <TextBlock Text="{Binding LastName}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

阅读我提供的链接并查看 MSDN 上的一些示例代码。

关于c# - 将自定义对象数据显示到 ListBox WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/576515/

相关文章:

c# - WPF 列表和上下文菜单

c# - 将当前页面作为邮件发送或获取当前页面 html

c# - WPF 窗口关闭事件用法

c# - MVVM:在 WPF NET 3.5 中完成线程池工作项后更新 View 的控件可见性

c# - 强制创建惰性对象

c# - ListView 更改 Metro Apps 中的文本大小

wpf - 如何在文本框上实现自动保存?

c# - 为列表框中的每个项目加载不同的数据模板

c# - 从类型定义字符串实例化 System.Type

c# - ServiceStack中的用户认证