Привязка к DataGridComboBoxColumn из коллекции
-
19-09-2019 - |
Вопрос
Пытаясь привязаться к коллекции в WPF, у меня получилось следующее:
КСАМЛ:
<toolkit:DataGrid Name="dgPeoples"/>
КС:
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;
}
}
}
Но что мне действительно нужно, так это DataGridComboBoxКолонка х.Вот мои доработки:
КСАМЛ:
<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>
С#:
Остается прежним.
Проблема теперь я получаю пустые столбцы со списком!Есть идеи, как я могу заставить это работать?
В конечном итоге мне нужна двухсторонняя привязка, когда двойной щелчок по столбцу имени вызывает поле со списком, в котором затем хранятся параметры всех возможных имен в коллекции (т. е.Джордж, Джим и Эми).
Благодарен за любую помощь!
Решение
Я просто хотел указать вам на один из лучших справочников по Datagrid WPF Toolkit. от Сэмюэля Моуры Я загрузил 15 образцов и храню их под рукой. Я даю вам ссылку, потому что вы найдете серию сообщений Datagrid более полезной, чем любая ссылка, чем я могу дать вам в качестве быстрого ответа.
Другие советы
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