Member 12229842 Ответов: 1

Как заполнить datagrid в зависимости от выбора combobox?


У меня есть combobox со значениями перечисления.
Теперь, когда я выбираю любое значение из выпадающего списка, я хочу заполнить datagrid записями, соответствующими выбранному значению.

Это проект WPF mvvm.
И строго без кода

Что я уже пробовал:

Я пробовал использовать свойство selecteditem для combobox

[no name]

"Я хочу заполнить datagrid записями, соответствующими выбранному значению", хорошо, так что вы знаете, что хотите, в чем ваш вопрос?

Member 12229842

Я очень новичок в wpf и mvvm... Я просмотрел много статей, в которых говорилось, что я должен использовать выбранное свойство элемента может быть использовано, я пробовал, но это не работает... когда я меняю свой выбор, он отражается в combobox, но datagrid не заполняется, поэтому мой вопрос в том, как мне это сделать ?

[no name]

Ты ведь шутишь, правда? "это не работает" - это не описание проблемы. Мы не можем видеть ваш код или читать ваши мысли. Вы берете выборку и используете ее в своем запросе, а результат запроса используете в качестве источника элементов для своей сетки. Никто не может сказать вам больше ничего, потому что вы не описали проблему, не показали нам свой код, не сказали нам, какой язык программирования вы используете, какой механизм базы данных вы используете, ничего.

Member 12229842

я использую entity framework
У меня есть интерфейс igetdatarepository который имеет следующую задачу
Задача< список & lt;сотрудник> & gt; getasyncamployee();

Задача & lt;список & lt;сотрудник> & gt; getasyncemployeewith(в зарплату)


Тогда у меня есть класс, который реализует этот Интер-фейс
метод GetData

Private dbcontext _context = новый dncontext();

Общих асинхронных задачу<список<сотрудник&ГТ;&ГТ; getasyncamployee()
{

Возвращения ждут _contex.работник.tolistasync();
}

Общих асинхронных задачу<список<сотрудник&ГТ;&ГТ; getasyncamployee(в зарплату)
{
Вернуться await_context.работник.Включить(e => e.зарплата == зарплата).tolistasync;

Member 12229842

Теперь смотреть
&ЛТ;комбобокс itemsource="{привязки salarylist}" Selectedvaluepath=значение selectedvalue ="{привязки employeedata книги, режим=двусторонней}


И viewmodel


Igetdatarepository _getdatarepo;
Общественные EmployeeViewModel(igetdatareposotory РЕПО)
{
If (designerproperties.getisdesignmode (новая система.Окна.класс DependencyObject())) вернуться;

_Getdatarepo = РЕПО;
}

Частный сотрудник _employeedata;
Государственный служащий employeedata
{
Возьми
{ возвращение _employeedata; }
Набор
{
Методов-setproperty(арт _employeedata, значение);
}
}


И я использую c#

Member 12229842

Mydatagrids itemsource-это наблюдаемая коллекция, которой я присваиваю значение из getasyncemployee

1 Ответов

Рейтинг:
11

Graeme_Grant

Ваш ViewModel (VM) должен предоставить свойство, которое привязано к ComboBox SelectedItem или SelectedIndex свойство, чтобы виртуальная машина могла быть уведомлена о выборе пользователя.

Затем ваша виртуальная машина может запустить запрос и обновить ваш ObservableCollection который будет автоматически виден связанным DataGrid и DataGrid будет отражать новые данные.


Member 12229842

Да я уже пробовал

У меня есть свойство employeedata, которое я привязал к выбранному свойству элемента combobox

Но когда я отлаживаю
Он показывает ноль

Member 12229842

Я все делал неправильно... Я понял смысл, и это сработало... спасибо