Как стать автором
Обновить

Комментарии 26

Хабрамашина времени перенесла нас на 10 лет назад.
А если без шуток, то успехов в изучении. Информацию по классам и подходам к программированию лучше всего искать не в яндексе, а в гугле, на msdn и stackoverflow на английском языке. В рамках WPF очень полезно прочитать про MVVM и IoC Containers, если использовать их сразу, то сберегут кучу времени и нервов.

Сама статья, к сожалению, никакой образовательной ценности не несет.
Да так и написал: «Не знаю, может, я рассказал очевидную для кого-то вещь...»
Для тех, для кого она неочевидна, она будет вредна, так как поведет по неправильному пути в изучении WPF.
Согласен, но если нужно быстро написать приложение, то подобный пример будет предпочтительней прочтения двух-трёх толстых книжек.
И Яндекс отличный поисковик, не уступающий гуглу (конечно это только моё мнение).
Как всегда, я решил, что в Яндексе найдётся всё, но не тут то было — в интернете (вернее в РУнете) вообще ничего о DataGrid нет.

Все о DataGrid, без «прочтения двух-трех толстых книжек».
Вы эту статью читали? Да, там есть информация о том, как поменять размер колонки или как перекрасить строчку, но того о чём написал здесь я, там нет. Действительно, с первого раза не заметил, но кратко свойство SelectedItem упоминается, причём без примера.
Все правильно написали. Поисковик нужен для выдачи решения для конкретной проблемы в как можно более сжатом виде, а не энциклопедической статьи.
PS: если собираетесь программно или автоматически менять размеры колонок, то сразу отказывайтесь от DataGrid. он больше любит фиксированные размеры колонок, отсутствие адаптивности под размеры экрана и ручной ресайз юзером.
А с авторесайзом и резиновым дизайном сразу убивается производительность старта приложения с DataGrid, т.к. этот контрол на старте делает ресайз несколько раз => UpdateLayout() с DataGrid ужирает процессор по-максимуму.
С ListView протребление значительно ниже.
«Искать в гугле» не значит, что яндекс — плохой поисковик. Скорее это вопрос специализации. Для девелоперских нужд выдача гугла релевантнее, субъективное ИМХО.
Эммм. В WPF у всех таблиц и списочных элементов есть свойства SelectedItem или SelectedItems.
Как-то быстро у вас заключение появилось, еще даже не началось ничего…
однако на это потратил довольно много времени
На приложение уровня «Hello world»? Вы правда считаете, что стоит всем об этом рассказывать?
Программка, в которой использовал таблицу здесь: Программа, это музыкальный плеер с использованием WCF. А приложение написал попроще, чтобы не перегружать кодом.
А если серьезно, то посмотрите WPF + MVVM, это перевернет ваше мировоззрение на построение GUI. Я не являюсь ярым фанатом того, что делает Microsoft, но это блестящая разработка.
Сразу надо было написать о том, что статья ни в коем случае не описывает вообще весь WPF, а только показывает прием программирования.
Да, конечно, я согласен с тем, что необходимо посмотреть WPF + MVVM чтобы во всём разобраться и стать профессионалом, но бывает такое, что нужно срочно сдать работу, например лабу или курсовую или ещё что, так вот для таких случаев бысторо разобраться, что к чему было бы лучше всего. Сам лично я не раз попадал в такие ситуации, когда например не зная толком языка программирования нужно было быстро написать рабочее приложение и в таких случаях я использую подобные примеры, а не пытаюсь за ночь выучить до профессионального уровня язык программирования.
«например лабу или курсовую или ещё что, так вот для таких случаев бысторо разобраться, что к чему было бы лучше всего. Сам лично я не раз попадал в такие ситуации, когда например не зная толком языка программирования нужно было быстро написать рабочее приложение»
Ну если для вас цель лабораторной работы не в том, чтобы по настоящему чему-то научиться, а чтобы её сдать, то да, такой подход подойдёт.
Да и то — если преподаватель не слишком внимательный.

«взял самый свежий .net framework 4.5» «использован Visual Studio 2012 и .net 4.0.»
Во-первых, вы указываете разные версии фреймворка, во-вторых, 4.5 не самая свежая версия, в третьих — зачем пользоваться 12ой студией?
На момент написания программы (не этого примера) был самый свежий .net 4.5. Использовал .net 4.0 для большей совместимости, а вдруг кто-то использует windows XP, а Visual Studio 2012 просто был под рукой (более того и 13-ая и 15-ая без проблем откроют проект из 12-ой студии).
Вот не выполните вовремя запрос (например не напишите программу), а с вас возьмут да и стребуют денежный штраф за срыв сроков выполнения работ, будете знать.
С windows XP погорячился, там вроде ничего выше VS 2010 не устанавливается.
Навряд ли в мире нормальной разработки с вас потребуют денежный штраф за срыв сроков. Хуже может быть, когда напишете в срок плохую программу, а она на проде не заработает нормально и будет адом в поддержке другими программистами — это в первую очередь скажется на вашей репутации. Если продолжите изучение программирования, .net и WPF, будете со смехом вспоминать эту статью и комментарии к ней.
Я как раз использую XP. Спасибо.
Ваша статья, как и ваш пример, несомненно, пролила свет на все скрытые аспекты и подводные камни WPF.
то подобный пример будет предпочтительней прочтения двух-трёх толстых книжек.

Пример великолепен.
Теперь я могу быдлокодить без, как вы правильно сказали, книжек.
Еще раз спасибо за столь содержательную статью
Картинка для вас
http://cs13.imagefiles.me/p/086191075125228012204046149162246194251016097051012226/1447054334/107634773/0/da9aeb6205f2bfe402d88f18c1c88da2/d0e31a50335c5b70ebddbfc5d0cec505/0/Daniro/asdf-spaces.ru.jpg
Ещё, постарайтесь именовать классы и методы соответственно и понятно. Особенно, если кому-то показываете. Название должно быть понятным и отражающим суть того, для чего класс или метод нужен.

Например, DimaFromMai даёт немало информации о том, кто это и откуда. А вот MyTable ничего не говорит. Более того, это вообще не таблица, а, судя по коду, даже и не класс, а структура. Пользу структур, кстати, тоже изучите.
Очень не рекомендую начинать (да и продолжать на самом деле) со стокового DataGrid в WPF. У него очень тежеловесный дизайн (архитектура и графическое дерево). Если Вам не нужны его встроенные фичи, а в реальных случаях велик шанс, что специфичные сценарии не получится с DataGrid реализовать именно так как UX спец написал, то лучше использовать ListView + GridView.
Сортировку и Фильтрацию надежнее снаружи реализовывать. При этом тормозов с ListView намного меньше будет.

Я профилировал перформанс двух одинаковых реализаций части экрана с DataGrid и ListView. Производительность отличается в разы в случае двухуровневых списков (Master и Details).
Самое интересное в том, что платформа WPF полностью переработана и многое из того, что работало в WinForm в WPF не работает вообще никак.
Фраза в корне не корректная. WPF — это не переработанный WinForms. Это отдельная платформа, написанная с нуля. Там совершенно другой механизм рендеринга. Да, классы называются похожими словами, реализованы на том же C# с тем же синтаксисом. Но суть совершенно другая. Именно поэтому у вас в статье кроме слова WPF ничего про WPF нет.

Ну и выше вам уже рекомендовали почитать про MVVM.
Я и не писал, что WPF — это переработанный WinForm, но спасибо за уточнение.
DataGrid работает только в WPF, в WinForm работать не будет.

Согласен с вами и с теми кто выше, обязательно прочитаю про MVVM.
Да, статья посвящена достаточно простому вопросу, и может быть не интересна многим пользователям Хабра, но мне она помогла решить проблему, с которой я провозился весь вечер. Спасибо, автор!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории