Как получить элементы ListView в WPF? - PullRequest
0 голосов
/ 26 июля 2011

Как получить доступ к элементам ListView в WPF?

Я знаю SelectedValuePath="...", но в моем ListView отображается 7 столбцов.Например, есть GridViewColumn, который содержит номера комнат, я хочу поместить всю строку номера комнаты в список и сделать это для всех столбцов.

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Ячейки просмотра списка генерируются списком объектов, в котором есть несколько привязок для каждого столбца.

Вы запрашиваете не путь WPF, а подход старого стиля (например, winforms)).WPF совершенно другой, и доступ к ячейкам громоздок (я бы добавил также ненадежный).

Зная выбранный объект, вы просто получаете доступ к его свойствам, с которыми связаны различные столбцы.

0 голосов
/ 26 июля 2011

WPF обрабатывает источники данных иначе, чем WinForms.Сначала это выглядит более сложным в WPF, потому что вы не можете получить доступ к исходной коллекции, как вы привыкли в WinForms.Тем не менее, вы быстро обнаружите, что WPF делает более естественной разработку.

В WPF вы хотите привязать ваш элемент управления пользовательского интерфейса (например, ListView) к источнику данных.Источник данных - это просто набор в коде любого пользовательского типа, каким вы хотите его видеть.До тех пор, пока вы предоставляете соответствующий доступ к коллекции, любой ваш выделенный код может обращаться к исходным данным, не обращаясь к ListView.

Для представлений списка источником данных будет ObservableCollection в DataContext ск которому ваше мнение подключено.Тип T является типом пользовательского класса.С помощью кода XAML вы можете определить шаблон данных в ListView, который описывает, как свойства вашего пользовательского типа класса отображаются для каждого элемента данных.

Чтобы узнать больше, изучите шаблон пользовательского интерфейса MVVM и изучите интерфейс INotifyPropertyChanged.

Например:

Код сзади

internal class MyViewModel
{
    public ObservableCollection<Person> People = new ObservableCollection<People>();

    // code to populate People
}

public class MyWindow
{
    public MyWindow()
    {
        DataContext = new MyViewModel();
    }
}

Вид

<ListView ItemsSource={Binding Path=People, Mode=OneWay}>
    <ListView.DataTemplate>
        <Label Content={Binding Path=FirstName, Mode=OneWay} />
        <!-- Blah blah blah -->
    </ListView.DataTemplate>
</ListView>

Эта статья MSDN углубляется в детали (см. Фрагменты кода и примеры в самом низу).

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