Доступ WPF Listview к SelectedItem и подэлементам

Этот ответ основан на статье, которая больше не существует:

Сводка статьи:

"В основном, WCF является уровнем служб, который позволяет Вам создавать приложения, которые могут передать использование множества механизмов связи. С ним можно передать Одноранговый узел использования для Пиринга, Именованные каналы, веб-сервисы и так далее.

Вы can’t сравнивают их, потому что WCF является платформой для того, чтобы создать совместимые приложения. Если Вам нравится, можно думать о нем как о механизме реализации SOA. Что это означает?

ну, WCF соответствует чему-то известному как ABC, где A является адресом сервиса, с которым Вы хотите связаться, B обозначает привязку, и C обозначает контракт. Это важно, потому что возможно изменить привязку, обязательно не изменяя код. Контракт намного более мощен, потому что он вызывает разделение контракта от реализации. Это означает, что контракт определяется в интерфейсе, и существует конкретная реализация, которая связывается с потребителем, использующим ту же идею контракта. Модель данных абстрагирована".

... позже...

"должен использовать WCF, когда мы должны связаться с другими технологиями связи (e.g. Одноранговый узел к Одноранговому узлу, Именованным каналам), а не веб-сервис"

12
задан Dave 10 September 2009 в 00:46
поделиться

1 ответ

listView1.SelectedItems [0] возвращает объект . Сначала вам нужно привести его к определенному типу , прежде чем вы сможете получить доступ к его членам. Для преобразования вам необходимо знать имя класса, в который выполняется преобразование, но вы добавляете экземпляры анонимного класса (= не имеет имени) в свой ListView.

Решение: Определите класс ( например, Книга ) со свойствами ISBN, Title и Author и добавьте экземпляры Book в ListView. Затем вы можете выполнить необходимое приведение:

private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
    Book book = (Book)listView1.SelectedItems[0];
    System.Windows.MessageBox.Show(book.ISBN);
}

Не забудьте добавить экземпляры if Book в ListView вместо экземпляров анонимного типа:

var items = from item in xdoc.Descendants("Book")
            select new Book                                   //  <---
            {
                ISBN = (string)item.Element("ISBN"),
                Title = (string)item.Element("Title"),
                Author = (string)item.Element("Author"),
            };

foreach (var item in items)
{
    listView1.Items.Add(item);
}
30
ответ дан 2 December 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: