Привязка к DataGridComboBoxColumn из коллекции - PullRequest
4 голосов
/ 09 февраля 2010

Пытаясь привязать коллекцию в WPF, я получил следующее:

XAML:

<toolkit:DataGrid Name="dgPeoples"/>

CS:

namespace DataGrid
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1
    {
        private readonly ObservableCollection<Person> personList = new ObservableCollection<Person>();

        public Window1()
        {
            InitializeComponent();

            personList.Add(new Person("George", "Jung"));
            personList.Add(new Person("Jim", "Jefferson"));
            personList.Add(new Person("Amy", "Smith"));

            dgPeoples.ItemsSource = personList;
        }
    }
}

не обязательно, но вот класс Person:

namespace DataGrid
{
    public class Person
    {
        public string fName { get; set; }
        public string lName { get; set; }

        public Person(string firstName, string lastName)
        {
            fName = firstName;
            lName = lastName;
        }
    }
}

Но что мне действительно нужно, так это DataGridComboBoxColumn . Вот мои ревизии:

XAML:

<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
    <toolkit:DataGrid.Columns>
        <toolkit:DataGridComboBoxColumn Width="5*"/>
        <toolkit:DataGridComboBoxColumn Width="5*"/>
    </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

C #:

Остается прежним.

Проблема теперь в том, что я получаю пустые поля со списком! Любые идеи, как я могу заставить это работать?

В долгосрочной перспективе мне нужно двухстороннее связывание, при котором двойной щелчок по столбцу имени вызывает окно со списком, в котором хранятся параметры всех возможных имен в коллекции (например, Джордж, Джим и Эми). *

Благодарен за любую помощь!

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Я просто хотел бы обратить ваше внимание на один из лучших справочников, когда речь идет о наборе данных WPF Toolkit, взятом из от Сэмюэля Моры Я скачал 15 образцов и держу их под рукой, я даю вам ссылка, потому что вы найдете серии постов Datagrid более полезными, чем любая ссылка, чем я могу дать вам быстрый ответ

1 голос
/ 09 февраля 2010

В DataGrid должны быть установлены свойства Header и ItemsSource:

<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
    <toolkit:DataGrid.Columns>
        <toolkit:DataGridComboBoxColumn Width="5*"
            Header="First Name"
            ItemsSource="{Binding Path=fName}"/>
        <toolkit:DataGridComboBoxColumn Width="5*"
            Header="First Name"
            ItemsSource="{Binding Path=lName}"/>
    </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

Похоже, что была проблема в одном из выпусков инструментария при использовании DataGridComboBoxColumn.ItemsSource: DataGridComboBoxColumn.ItemsSource не работает .

Однако был создан обходной путь для Использование комбинированных полей с WPF DataGrid . Наконец, вы можете взглянуть на статью Более веселая с DataGrid от Маргарет Парсонс.

Редактировать
Теперь я не уверен, что приведенный выше код работает. Я сделал это из памяти и ссылался на другие ссылки как ресурсы.

Взгляните на этот пост SO, который, кажется, решает эту проблему: Привязка проблемы DataGridComboBoxColumn.ItemsSource

...