Можно ли привязать данные напрямую из результата запроса linq к элементу управления? - PullRequest
2 голосов
/ 20 октября 2010

Я только начал использовать WPF, и у меня возникают проблемы с привязкой данных из результата запроса Linq к ListView.

Я пробовал несколько комбинаций, включая установку DataContext и ItemsSource на запрос. Как в:

listView.DataContext = (from person in People select person).ToList();

Затем в xaml установите для DisplayMemberBinding значение {Имя привязки} или {Связывание / Имя} и т. Д.

Меня не волнует какое-либо обновление, кроме как показ списка элементов из запроса на данном этапе.

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

1 Ответ

2 голосов
/ 20 октября 2010

Попробуйте вместо этого:

listView.ItemsSource = (from person in People select person).ToList();

[DataContext устанавливает контекст привязки для элемента управления и его дочерних элементов.ItemsSource устанавливает коллекцию, используемую для генерации содержимого элементов в элементе управления.]

Вы также можете просто:

listView.ItemsSource = People;

Более полный пример:

MainWindow.xaml:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView x:Name="listView">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Age}"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace WpfApplication2
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();

      var people = new[] { new { Name = "John", Age = 40 }, new { Name = "Bill", Age = 50 } };
      listView.ItemsSource = people;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...