Отображение данных пользовательских объектов в ListBox WPF - PullRequest
7 голосов
/ 23 февраля 2009

У меня есть ListBox в приложении 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>

Как я могу привязать какое-либо свойство объекта к этому ListBox в Design или во время выполнения, чтобы получить мою функциональность?

1 Ответ

25 голосов
/ 23 февраля 2009

Пара вариантов:

Первый, самый простой вариант - установить свойство ListBox DisplayMemberPath для свойства вашего пользовательского объекта. Поэтому, если у вашего класса Employee есть свойство LastName, вы можете сделать это:

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

Если вам нужен больший контроль над данными, отображаемыми для каждого элемента (включая пользовательский макет и т. Д.), Вам нужно определить DataTemplate для каждого элемента в ListBox. Самый простой способ сделать это - просто установить свойство ListBox ItemTemplate :

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

Прочтите предоставленные мной ссылки и ознакомьтесь с примером кода в MSDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...