В настоящий момент я действительно борюсь с WPF ListView, я представляю, что упускаю что-то действительно глупое, но после пары часов поиска в Google, я подумал, что лучше спросить.
Я пытаюсь получить доступ к текстовому содержимому отдельных ячеек в ListView, который был создан с помощью GridView таким образом:
<ListView Name="MyListView">
<ListView.View>
<GridView>
<GridViewColumn Header="Foo" DisplayMemberBinding="{Binding Foo}"/>
<GridViewColumn Header="Bar" DisplayMemberBinding="{Binding Bar}"/>
</GridView>
</ListView.View>
</ListView>
Я добавляю в список так:
var foobars = new ObservableCollection<Foobar>();
foobars.Add(new Foobar { Foo = "Hello", Bar = "world" });
MyListView.ItemsSource = foobars;
Теперь я хотел бы взять слово «мир» из второго столбца первого ряда. Если бы это были WinForms, я бы набрал:
var word = (string)(((ListViewItem)MyListView.Items[0]).SubItems[1]);
Я не могу найти способ сделать это в WPF! Я понимаю, что мог сделать:
var word = ((Foobar)MyListView.Items[0]).Bar;
Но в моем реальном приложении текст, который появляется в ListView, прошел через один из нескольких ValueConverters, в зависимости от того, в каком столбце он находится, и поэтому не совпадает с текстом в объекте привязки. Мне просто нужно захватить текст, который отображается для пользователя, а не базовый объект данных.
Есть ли у кого-нибудь из гуру кода какие-либо советы ??
Приветствия
Gavin