Что почитать: свежие записи из разных блогов

Записи с тэгом #C# из разных блогов

Luar Soll, блог «Программизмы»

* * *

О кастомизации элементов управления:

User Control - объединить несколько контролов в один (если, например, какая-то комбинация их встречается часто)

Custom Control - собственно кастомные элементы, могут быть унаследованы от Control (или еще более общих вещей) и отрисованы с нуля, могут быть унаследованы от чего-то более конкретного и менять его работу

Control Template - когда надо радикально поменять вид, но сохранить функциональность

 

Для анимации изменения какого-нибудь параметра Control-а (например, высоты) можно использовать Storyboard. Style и Template можно менять в зависимости от действий пользователя (или отображаемых данных)

 

О browser-like навигации

Работая с навигацией между страницами (в веб-приложении или в Standalone) можно сделать на странице Frame, в котором тоже будет навигация между страницами, и в истории навигации будет запоминаться и то, как менялся Frame тоже (можно объединить это в в одной паре стрелочек Back и Forward, можно в Frame встроить свою)

 

Luar Soll, блог «Программизмы»

* * *

- В XAML написано, к какому классу относится этот XAML. При сборке приложения берется XAML, по нему определяется, какой нужен класс, и лишь затем создается объект класса

- От запуска приложения до начала его работы может пройти какое-то время, пока приложение инициализируется. В это время можно показать картинку SplashScreen

- Первое созданное в приложении окно по умолчанию считается главным

- Если на старте приложения (функция Startup) надо только открыть окно (или страницу в браузерном приложении), то можно не писать функцию Startup (может называться по-другому) в коде, а указать это окно или страницу в XAML приложения

- В функции Startup (может называться по-другому) происходит обработка аргументов командной строки

- В XAML можно указать сопоставление событий и функций обработки событий (например, указать функции обработки активации/деактивации окна)

- Можно поймать в дверях Unhandled Exception с помощью обработчика DispatcherUnhandledException и как минимум более корректно завершить работу приложения и сказать пользователю об ошибке. А как максимум сделать, чтобы приложение продолжило работу

 

 

Luar Soll, блог «Программизмы»

Еще конспекта про WPF и DataBinding кусок

- Мы можем привязываться не только полностью к Collection View, но также и к "текущему" элементу коллекции и к определенному полю внутри коллекции. Возможны вложенные коллекции и привязка к их View. "Текущий элемент" - например, последний выделенный

- DataTemplate - как именно отображать элемент Collection View в UI. Позволяет не только выбрать информацию к отображению, но и "сделать красиво" (причем по-разному в зависимости от параметров отображаемого элемента коллекции). То, что не зависит от параметров отображаемого элемента, лучше настраивать через настройки UI в целом

- Возможно выбирать конкретный Template в зависимости от параметров элемента Collection View (и отображать элементы _совсем_ по-разному), но это уже делается в коде

- ValidationRule - проверка того, что введенные в элемент UI данные можно конвертировать в привязанную к этому элементу переменную. Есть стандартные, можно создавать свои. Как именно выглядит уведомление об ошибке - тоже можно задавать

- Валидация может быть как до конвертации строки в значение (например, что в строке число), так и после (например, что это число в указанных пределах). Также может быть какая-то валидация после присвоения значения привязанной переменной

- По умолчанию ListBox, привязанный к коллекции, берет от элемента .ToString, и иногда достаточно переопределить ToString

- Реально дофига всего можно сделать с Data Binding именно через XAML, не залезая в код. Например, привязаться к Enum. Или задать конкретные параметры для функции валидации

 

Если создается пользовательский класс, объект которого к чему-то привязывается, то:

- Если будет передача данных от объекта, то нужны уведомления об изменениях

- Свойства объекта, используемые при привязке, должны быть public

- Невозможно привязаться к полям

 

MSDN можно переключить на американскую версию. Но для этого нужно прокрутить до самого низа страницы. Там слева будет переключатель.

Luar Soll, блог «Программизмы»

Конспекты продолжаются

- Если вы пытаетесь создать объект не существующего класса, то VS2015 предложит вам создать этот класс и даже покажет превью

- По буквосочетанию In подсказка VS2015 выдаст не только Input, но и LoadInput. Но не Window, потому что ориентируется на то, что значимые слова в имени переменной/функции начинаются с больших букв. Иногда можно набрать только большие буквы и получить функцию целиком (OSI -> OpenStandardInput)

- Ctrl делает подсказку от IntelliSense прозрачной

- В WPF возможен Binding коллекций. Для этого нужен CollectionView. Сначала в ресурсах нужно привязать CollectionViewSource к коллекции (и дать ему имя), потом параметр ItemsSource элемента интерфейса (например, ListBox) к CollectionViewSource (с конкретным именем). Еще у коллекций есть View по умолчанию, можно привязываться просто к нему. Если мы сортируем/фильтруем ListBox, то это влияет на привязанный View, но не на саму коллекцию

Luar Soll, блог «Программизмы»

Visual Studio 2015

Продолжаем:

 

- Если нужно посмотреть на текст вызываемой функции, можно не переходить к файлу, а посмотреть его во "врезке" (мысль интересная, но я постоянно !нечаянно! попадаю по этому варианту, а не по стандартному переходу к файлу, и это меня бесит)

- Можно вместо скроллбара сделать своеобразный "силуэт файла" - с моим "я не помню, какая это была страница, но форма текста там была вот такая!" это может быть полезно... но с моей длиной файлов с кодом - скорее вредно))

- Поиск через Navigate To работает с учетом релевантности. Может быть полезно. Но может быть пц нелогично

- Есть окно, где можно в режиме "написал - выполнил" выполнять отдельные кусочки команд - усложненная версия возможности посмотреть значение конкретного выражения на брекпойнте. Может быть полезно при дебаге (гуглить по словам Immediate Window)

- Часть сообщений об ошибках вылезает на этапе редактирования, а не только при компиляции

Luar Soll, блог «Программизмы»

Visual Studio 2015

Вообще в основном я работаю в Qt Creator и пишу на C++. Но бывает, что мне нужно (для определенной задачи или для определенного проекта) мигрировать под Visual Studio, а то и вообще на C#. Вот сейчас как раз такой случай.

Причем если на плюсах под Visual Studio я некоторое время назад уже писала (но студия была 2010 и 2013), то на шарпе я писала дааавноооо. А тут еще ощущение, что пользовательский интерфейс VS2015 очень сильно отличается от пользовательского интерфейса VS2013.

 

С методом ненаучного тыка у меня в последние дни плохо, поэтому, не сумев сразу сделать то, что было надо и обнаружив несколько вроде бы и в общих чертах понятных, но все равно каких-то для меня загадочных фич, я нагло спиратила добыла на просторах интернета книжку по VS2015 и потихоньку ее читаю заодно пополняю свой англоязычный словарный запас*. При этом иногда нахожу такое, что бы вряд ли нашла просто тыкая кнопочки. И что наверняка забуду, если не законспектировать.

 

В общем, пока читаю про пользоавтельский интерфейс VS2015, из интересного уже почерпнула следующее:

- Просто горячих клавиш и сочетаний клавиш с Ctrl и прочим Alt там уже жестоко не хватает, поэтому, скажем, для того, чтобы закомментить блок кода нужно нажать сначала Ctrl+K, потом Ctrl+C

- Если код выровненный и в нескольких строчках подряд должен быть одинаковый кусок текста в одном месте (например, сразу несколько переменных нам надо срочно превратить из float в double), то можно "выделить вертикальный блок кода" и сразу удалить его содержимое или вбить один и тот же текст в нескольких строчках

 

*мой англоязычный словарный запас - это отдельное нечто, потому что он складывается в основном из форумов по программированию и фэнтези в различных проявлениях (книги, рулбуки, комп.игры).


Лучшее   Правила сайта   Вход   Регистрация   Восстановление пароля

Материалы сайта предназначены для лиц старше 16 лет (16+)