|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Добрый день господа форумчане. Возник вопрос, как при использовании паттерна MVVM в WPF при выделении строки в DataGrid получить её содержимое? вот код: 1. ViewModel получаем заполненный DataSet Код C# Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
2.Model Код XML Код: xml 1. 2. 3. 4.
Насколько я понимаю, при выделении строки в DataGrid должно сработать SelectedItem и данные передадутся в SelectSong, но этого не происходит Подскажите пожалуйста! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 23:00 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
SelectedItem - объект, а не список. public List<Song> Song SelectSong ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 06:26 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
SeVaSelectedItem - объект, а не список. public List<Song> Song DataRowView SelectSongПоправил ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 08:02 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
к сожалению проблема не в том Song or List<Son>, там вообще просто с DataGrid при выделении строки совсем другой тип возвращается:( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2013, 17:13 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Alex_studenticu, Недавно что-то похожее делал. Сажаешь обработчик события в датагрид (можешь расширить текущий датагрид либо добавить бихейвер) по клику мышкой на датагриде. Далее через InputHitTest ищешь парент с нужным тебе типом - в твоем случае DataGridRow. Ну и в принципе все. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 11:31 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Alex_studenticu, Поправлю себя. Я общем виде описал тебе метод получения итема, который ты посадил в датароу (точнее сам датагрид посадил). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 13:32 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Кто как решает такую задачу? Как принято красиво при нажатии кнопка “Отмена” (ESC или крестик) вернуть обратно первоначальное значение выделенной строки грида? Я конечно могу подтасовать новый экземпляр и намапить его свойства из предыдущего, тогда у меня будут разные объекты. Но как-то это жестоко… ... Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 12:26 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 12:26 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Проще для формы редактирования запросить с сервера свою копию записи, или клонировать текущую из грида. При применении в форме заменить текущую запись в гриде на запись из формы редактирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:15 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУЯ конечно могу подтасовать новый экземпляр и намапить его свойства из предыдущего, тогда у меня будут разные объекты.Упс, не заметил. :-) МСУНо как-то это жестоко…Жестоко - это видеть в основной форме с гридом незакоммиченные изменения из формы редактирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:17 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей К, ну вообщем да, так и сделал. Но гложет сомнение, что можно как-то нечерезжопно сделать... :) EmployeesViewModel Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
EmployeesViewModel Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
Лёня, попинай, если что :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:29 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Гкхм... А не проще на команду сохранения и отмены "посадить" в конце чтение объекта из базы? Просто в случае отмены - не сохранять. И IEditableObject - разве не для чего-то такого "придуман"? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:32 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУ// Пачка дублирующего уныния, вместо пряморукого объекта Employee :( public int EmployeeId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } Я бы не стал без необходимости дублировать поля модели во вьюмодели. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:36 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУЛёня, попинай, если что :)Забудь на время про "MVVM бэстпрактик". Накидай прототип приложения с логикой в code-behind. Потом выноси код из code-behind во ViewModel по мере необходимости. Так будет лучше, поверь мне. :-) зы: Будут проблемы с биндингом из XAML на code-behind - спрашивай, подскажу, решения есть... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 13:51 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУКто как решает такую задачу? Как принято красиво при нажатии кнопка “Отмена” (ESC или крестик) вернуть обратно первоначальное значение выделенной строки грида? Я конечно могу подтасовать новый экземпляр и намапить его свойства из предыдущего, тогда у меня будут разные объекты. Но как-то это жестоко… Ряд товарисчей считают, что такая штука реализуется через Undo/Redo, постороенном на основе Command pattern - как-то так . Писанины много конечно, но вроде как для этого есть отдельные фреймворки - типа вот этого: http://muf.codeplex.com/. Разумеется, при нежелании тащить в свой проект сторонние компоненты, можно написать свой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:12 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
MonochromatiqueА не проще на команду сохранения и отмены "посадить" в конце чтение объекта из базы? Просто в случае отмены - не сохранять. Как-то сложно. У меня на отмене вообще ничего не сидит. MonochromatiqueИ IEditableObject - разве не для чего-то такого "придуман"? Вариант, да. Алексей КЯ бы не стал без необходимости дублировать поля модели во вьюмодели. Так тоже самое получается. Мне нужно заново перемапить Employee, чтобы он "отвязался" от грида. Но в принципе, согласен. Алексей КПотом выноси код из code-behind во ViewModel по мере необходимости. Так будет лучше, поверь мне. :-) Не хочу :) Алексей Кзы: Будут проблемы с биндингом из XAML на code-behind - спрашивай, подскажу, решения есть... Ок, спс :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:14 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРяд товарисчей считают, что такая штука реализуется через Undo/Redo, постороенном на основе Command pattern - как-то так . Писанины много конечно, но вроде как для этого есть отдельные фреймворки - типа вот этого: http://muf.codeplex.com/. Разумеется, при нежелании тащить в свой проект сторонние компоненты, можно написать свой. Стараюсь делать нативщиной, у меня даже RelayCommand свой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:15 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУСтараюсь делать нативщиной, у меня даже RelayCommand свой :)Одобряю. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:26 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Вообще этот xaml какой-то хрупковатый, чуть пукнул в сторонке, завалилось к ебени всё вью - мвц поприятнее будет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:34 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУСтараюсь делать нативщиной, у меня даже RelayCommand свой :) Это нормально, каждый впф-ник имеет в заначке свой собственный самописный фреймворк, даже если использует еще какие-то другие. У меня тоже есть такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:38 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУВообще этот xaml какой-то хрупковатый, чуть пукнул в сторонке, завалилось к ебени всё вьюЭто поначалу, потом привыкнешь. :-) МСУмвц поприятнее будет :)Чему там ломаться? Там дизайнера в принципе нету. Может оно и правильно... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:39 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМСУСтараюсь делать нативщиной, у меня даже RelayCommand свой :) Это нормально, каждый впф-ник имеет в заначке свой собственный самописный фреймворк, даже если использует еще какие-то другие. У меня тоже есть такое.+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:39 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМСУСтараюсь делать нативщиной, у меня даже RelayCommand свой :) Это нормально, каждый впф-ник имеет в заначке свой собственный самописный фреймворк, даже если использует еще какие-то другие. У меня тоже есть такое. Это да, но я должен реально прочувствовать, что без того или иного фреймворка спокойного жить не получится. Пока не вижу такой необходимости в использовании сторонних грабель. Возможно потом изменится мнение... Алексей КЧему там ломаться? Там дизайнера в принципе нету. Может оно и правильно... Ну дизайнер есть у WebForms, дизайнер - это хорошо. Основной минус замла от хтмл в том, что нельзя прям в студийной отладке править декларативнщину. Бесит всё время стопить апп :( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:46 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей КЧему там ломаться? Там дизайнера в принципе нету. Может оно и правильно... Ну дизайнер есть у WebForms,Ты говорил про МВЦ. МСУдизайнер - это хорошо.Не всегда. Поддержка дизайнера требует определённых жертв. Это было особенно актуально в WinForms. К счастью, этот ужас давно в прошлом. :-) В WPF дизайнер тоже, бывает, даёт о себе знать, но редко. Впрочем, я отвык от дизайнера. Привык писать XAML вручную. Такой подход тоже имеет свои преимущества. МСУОсновной минус замла от хтмл в том, что нельзя прям в студийной отладке править декларативнщину. Бесит всё время стопить апп :(В VS2010 бесят тормоза дизайнера. В более поздних VS это обещали поправить. К сожалению, использовать их не могу, WinXP сцукко. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 14:59 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КТы говорил про МВЦ. А в мвц запрещено использовать винформз? Алексей КНе всегда. Поддержка дизайнера требует определённых жертв. Это было особенно актуально в WinForms. К счастью, этот ужас давно в прошлом. :-) Не понимаю, о каких жертвах идет речь? :) Алексей КВпрочем, я отвык от дизайнера. Привык писать XAML вручную. Такой подход тоже имеет свои преимущества. Согласен. Но первоначально выбрать компонент из палитры, положить его, отцентрировать, задать через F2 название той же кнопки - весьма приятно. Алексей КВ VS2010 бесят тормоза дизайнера. В более поздних VS это обещали поправить. К сожалению, использовать их не могу, WinXP сцукко. Уже больше года не трогал десятку... Сейчас 12 и 13 студия. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2013, 15:08 |
|
|
start [/forum/topic.php?fid=21&fpage=26&tid=1441238]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 448ms |
0 / 0 |