Ввод дробных числа с запятой вместо точки в DataGrid WPF и других контролах

Способ работает в любых контролах ввода текста, разберёмся на примере DataGrid. По умолчанию DataGrid не даст ввести дробное число «по-русски», то есть, формата «123,45», в ячейку с прибинденным значением типа float, decimal и т. п. Это происходит потому, что русскоязычный формат разделителя не соответствует формату «по умолчанию», то есть, разделитель точка.
Читать далее «Ввод дробных числа с запятой вместо точки в DataGrid WPF и других контролах»

Добавим таймер во ViewModel

Сегодня мы разберёмся с тем, как заставить программу, написанную с применением MVVM, самостоятельно и в реальном времени обновлять данные, с которыми взаимодействует View. Основная проблема заключается в том, что таймеры из System.Windows и System.Threading создают отдельные потоки в фоне, что вызывает исключение при попытке изменения отслеживающих обновление свойств, которые связаны с UI.
Читать далее «Добавим таймер во ViewModel»

Сравнение скорости работы циклов в PHP

Вот, решил вступить в холивар по поводу скорости работы циклов. Аналитику проводил не блога ради — работы для. В конце поста мы, думаю, окончательно определимся с тем, какие циклы в каких случаях лучше применять.
Читать далее «Сравнение скорости работы циклов в PHP»

Быстрый доступ к нужным кускам кода при разработке на Битриксе

Страничка для быстрой копипасты часто используемых при разработке кусков кода и ссылки на странички документации к ним. Читать далее «Быстрый доступ к нужным кускам кода при разработке на Битриксе»

Запуск приложения от имени администратора с технологией ClickOnce

Сегодня мы рассмотрим способ, который позволит приложению ClickOnce запускаться от имени администратора. Дело в том, что если мы воспользуемся обычной правкой манифеста <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />, то программа не скомпилируется и выдаст ошибку: «ClickOnce не поддерживает уровень выполнения запроса «requireAdministrator»». Чтобы реализовать запуск программы от имени администратора и, при этом, продолжить использовать ClickOnce, мы будем манипулировать процессами при старте программы. В статье описан способ как для Windows Forms, так и для WPF.
Читать далее «Запуск приложения от имени администратора с технологией ClickOnce»

Защита программы от множественного запуска

Поскольку создание приложения для Windows Forms и WPF отличается, в статье рассмотрим оба варианта.

Читать далее «Защита программы от множественного запуска»

Пара ключ-значение для ComboBox (WinForms)

В этой статье мы рассматриваем вариант для Windows Forms. Решение для WPF здесь.

После семи лет работы с PHP/JS/HTML я начал переходить в C# и первым удивлением для меня стало отсутствие быстрого решения вопроса выпадающих списков. В HTML/PHP это всё красиво. Пишем в атрибут value идентификатор, в содержимое тега — текст.

Читать далее «Пара ключ-значение для ComboBox (WinForms)»

ID значения в TreeView, поиск TreeNode по ключу

По умолчанию в коллекции TreeView есть только значение и индекс, который автоматически генерируется системой. При этом, создать коллекцию, как в ComboBox, тоже не получится. В этой статье мы рассмотрим возможность присвоения ключа, а также легкий способ его найти.
Читать далее «ID значения в TreeView, поиск TreeNode по ключу»

Древовидное меню из компонента «Структура разделов»

Мне никогда не нравилось использовать в качестве меню стандартный компонент bitrix:catalog.section.list, который «Структура разделов», хотя при разработке любого каталога или интернет-магазина, он просто незаменим. А когда дело доходит до многоуровневых каталогов, мозг потихоньку начинает взрываться от отсутствия древовидного массива.

Читать далее «Древовидное меню из компонента «Структура разделов»»