[{"data":1,"prerenderedAt":28297},["ShallowReactive",2],{"navigation_docs":3,"-csharp-desktop-ui-04c-handycontrol-library":2949,"-csharp-desktop-ui-04c-handycontrol-library-surround":28292},[4,1640,1765,2219,2352,2559,2641,2691,2748,2782,2908,2945],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"C#","i-devicon-csharp","/csharp","01.csharp",[10,13,60,90,120,202,219,253,379,404,457,650,1346,1636],{"title":11,"path":7,"stem":12},"C# Roadmap","01.csharp/index",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":59},"Fundamentals","i-lucide-book-open","/csharp/fundamentals","01.csharp/01.fundamentals",[19,23,27,31,35,39,43,47,51,55],{"title":20,"path":21,"stem":22},"Вступ до екосистеми .NET","/csharp/fundamentals/introduction-to-ecosystem","01.csharp/01.fundamentals/01.introduction-to-ecosystem",{"title":24,"path":25,"stem":26},"Структура програми на C#","/csharp/fundamentals/program-structure","01.csharp/01.fundamentals/02.program-structure",{"title":28,"path":29,"stem":30},"Змінні та Типи Даних","/csharp/fundamentals/variables-data-types","01.csharp/01.fundamentals/03.variables-data-types",{"title":32,"path":33,"stem":34},"Масиви","/csharp/fundamentals/arrays","01.csharp/01.fundamentals/04.arrays",{"title":36,"path":37,"stem":38},"Strings & Text Handling","/csharp/fundamentals/strings-text-handling","01.csharp/01.fundamentals/05.strings-text-handling",{"title":40,"path":41,"stem":42},"Дати і Час","/csharp/fundamentals/dates-time-handling","01.csharp/01.fundamentals/06.dates-time-handling",{"title":44,"path":45,"stem":46},"Потік Керування","/csharp/fundamentals/control-flow","01.csharp/01.fundamentals/07.control-flow",{"title":48,"path":49,"stem":50},"Методи","/csharp/fundamentals/methods","01.csharp/01.fundamentals/08.methods",{"title":52,"path":53,"stem":54},"Основи Відлагодження","/csharp/fundamentals/debugging-basics","01.csharp/01.fundamentals/09.debugging-basics",{"title":56,"path":57,"stem":58},"Інтерактивна Консоль (Classic)","/csharp/fundamentals/interactive-console","01.csharp/01.fundamentals/10.interactive-console",false,{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":59},"OOP","i-lucide-box","/csharp/oop","01.csharp/02.oop",[66,70,74,78,82,86],{"title":67,"path":68,"stem":69},"Package Management (Управління Пакетами)","/csharp/oop/package-management","01.csharp/02.oop/01.package-management",{"title":71,"path":72,"stem":73},"Класи та Об'єкти","/csharp/oop/classes-objects","01.csharp/02.oop/02.classes-objects",{"title":75,"path":76,"stem":77},"Властивості та Поля","/csharp/oop/properties-fields","01.csharp/02.oop/03.properties-fields",{"title":79,"path":80,"stem":81},"Стовпи ООП","/csharp/oop/oop-pillars","01.csharp/02.oop/04.oop-pillars",{"title":83,"path":84,"stem":85},"Advanced Types","/csharp/oop/advanced-types","01.csharp/02.oop/05.advanced-types",{"title":87,"path":88,"stem":89},"Namespaces (Простори Імен)","/csharp/oop/namespaces","01.csharp/02.oop/06.namespaces",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":59},"Advanced Core","i-lucide-zap","/csharp/advanced-core","01.csharp/03.advanced-core",[96,100,104,108,112,116],{"title":97,"path":98,"stem":99},"Generics (Узагальнення)","/csharp/advanced-core/generics","01.csharp/03.advanced-core/01.generics",{"title":101,"path":102,"stem":103},"Делегати, Події та Лямбда-вирази","/csharp/advanced-core/delegates-events-lambdas","01.csharp/03.advanced-core/02.delegates-events-lambdas",{"title":105,"path":106,"stem":107},"Interfaces Deep Dive (Інтерфейси: Поглиблений Розгляд)","/csharp/advanced-core/interfaces-deep-dive","01.csharp/03.advanced-core/03.interfaces-deep-dive",{"title":109,"path":110,"stem":111},"Обробка Винятків","/csharp/advanced-core/exception-handling","01.csharp/03.advanced-core/04.exception-handling",{"title":113,"path":114,"stem":115},"Pattern Matching","/csharp/advanced-core/pattern-matching","01.csharp/03.advanced-core/05.pattern-matching",{"title":117,"path":118,"stem":119},"Додаткові Можливості C#","/csharp/advanced-core/additional-features","01.csharp/03.advanced-core/06.additional-features",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":59},"Architecture Best Practices","i-lucide-building-2","/csharp/architecture-best-practices","01.csharp/04.architecture-best-practices",[126,130,149,153,157,161,165,169],{"title":127,"path":128,"stem":129},"Software Design Principles (Частина 1)","/csharp/architecture-best-practices/software-design-principles","01.csharp/04.architecture-best-practices/01.software-design-principles",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":59},"Design Patterns","i-lucide-folder","/csharp/architecture-best-practices/design-patterns","01.csharp/04.architecture-best-practices/02.design-patterns",[136],{"title":137,"icon":132,"path":138,"stem":139,"children":140,"page":59},"Creational","/csharp/architecture-best-practices/design-patterns/creational","01.csharp/04.architecture-best-practices/02.design-patterns/creational",[141,145],{"title":142,"path":143,"stem":144},"Singleton (Одинак)","/csharp/architecture-best-practices/design-patterns/creational/singleton","01.csharp/04.architecture-best-practices/02.design-patterns/creational/01.singleton",{"title":146,"path":147,"stem":148},"Builder (Будівельник)","/csharp/architecture-best-practices/design-patterns/creational/builder","01.csharp/04.architecture-best-practices/02.design-patterns/creational/02.builder",{"title":150,"path":151,"stem":152},"Building Professional CLIs","/csharp/architecture-best-practices/building-professional-clis","01.csharp/04.architecture-best-practices/03.building-professional-clis",{"title":154,"path":155,"stem":156},"Validation & Flow Control","/csharp/architecture-best-practices/validation-flow-control","01.csharp/04.architecture-best-practices/04.validation-flow-control",{"title":158,"path":159,"stem":160},"The Modern .NET Host (Microsoft.Extensions)","/csharp/architecture-best-practices/modern-dotnet-host","01.csharp/04.architecture-best-practices/05.modern-dotnet-host",{"title":162,"path":163,"stem":164},"Data Mapper: Repository та DAO патерни (Частина 1)","/csharp/architecture-best-practices/data-mapper-part1","01.csharp/04.architecture-best-practices/06.data-mapper-part1",{"title":166,"path":167,"stem":168},"Data Mapper: Repository та DAO патерни (Частина 2)","/csharp/architecture-best-practices/data-mapper-part2","01.csharp/04.architecture-best-practices/07.data-mapper-part2",{"title":170,"icon":132,"path":171,"stem":172,"children":173,"page":59},"Di Ioc","/csharp/architecture-best-practices/di-ioc","01.csharp/04.architecture-best-practices/08.di-ioc",[174,178,182,186,190,194,198],{"title":175,"path":176,"stem":177},"Проблема залежностей та Інверсія Контролю","/csharp/architecture-best-practices/di-ioc/the-dependency-problem","01.csharp/04.architecture-best-practices/08.di-ioc/01.the-dependency-problem",{"title":179,"path":180,"stem":181},"Будуємо власний Service Container","/csharp/architecture-best-practices/di-ioc/build-your-own-container","01.csharp/04.architecture-best-practices/08.di-ioc/02.build-your-own-container",{"title":183,"path":184,"stem":185},"Service Locator: Паттерн та Анти-паттерн","/csharp/architecture-best-practices/di-ioc/service-locator-pattern","01.csharp/04.architecture-best-practices/08.di-ioc/03.service-locator-pattern",{"title":187,"path":188,"stem":189},"Паттерни Dependency Injection","/csharp/architecture-best-practices/di-ioc/dependency-injection-patterns","01.csharp/04.architecture-best-practices/08.di-ioc/04.dependency-injection-patterns",{"title":191,"path":192,"stem":193},"Microsoft DI: IServiceCollection та IServiceProvider","/csharp/architecture-best-practices/di-ioc/microsoft-di-deep-dive","01.csharp/04.architecture-best-practices/08.di-ioc/05.microsoft-di-deep-dive",{"title":195,"path":196,"stem":197},"Service Lifetimes та Scopes","/csharp/architecture-best-practices/di-ioc/service-lifetimes-and-scopes","01.csharp/04.architecture-best-practices/08.di-ioc/06.service-lifetimes-and-scopes",{"title":199,"path":200,"stem":201},"DI Анти-паттерни та Найкращі Практики","/csharp/architecture-best-practices/di-ioc/di-anti-patterns-and-best-practices","01.csharp/04.architecture-best-practices/08.di-ioc/07.di-anti-patterns-and-best-practices",{"title":203,"icon":132,"path":204,"stem":205,"children":206,"page":59},"Standard Library","/csharp/standard-library","01.csharp/05.standard-library",[207,211,215],{"title":208,"path":209,"stem":210},"Collections (Колекції)","/csharp/standard-library/collections","01.csharp/05.standard-library/01.collections",{"title":212,"path":213,"stem":214},"High Performance Types (Високопродуктивні Типи)","/csharp/standard-library/high-performance-types","01.csharp/05.standard-library/02.high-performance-types",{"title":216,"path":217,"stem":218},"LINQ (Language Integrated Query)","/csharp/standard-library/linq","01.csharp/05.standard-library/03.linq",{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":59},"System Internals Concurrency","i-lucide-server","/csharp/system-internals-concurrency","01.csharp/06.system-internals-concurrency",[225,229,233,237,241,245,249],{"title":226,"path":227,"stem":228},"Memory Management","/csharp/system-internals-concurrency/memory-management","01.csharp/06.system-internals-concurrency/01.memory-management",{"title":230,"path":231,"stem":232},"Reflection API: System.Type та Метадані","/csharp/system-internals-concurrency/reflection-fundamentals","01.csharp/06.system-internals-concurrency/02.reflection-fundamentals",{"title":234,"path":235,"stem":236},"Attributes та Dynamic Language Runtime","/csharp/system-internals-concurrency/attributes-dynamic","01.csharp/06.system-internals-concurrency/03.attributes-dynamic",{"title":238,"path":239,"stem":240},"Expression Trees: Швидка Альтернатива Рефлексії","/csharp/system-internals-concurrency/expression-trees-compiled","01.csharp/06.system-internals-concurrency/04.expression-trees-compiled",{"title":242,"path":243,"stem":244},"Source Generators: Compile-Time Code Generation","/csharp/system-internals-concurrency/source-generators","01.csharp/06.system-internals-concurrency/05.source-generators",{"title":246,"path":247,"stem":248},"Multithreading Fundamentals","/csharp/system-internals-concurrency/multithreading-fundamentals","01.csharp/06.system-internals-concurrency/06.multithreading-fundamentals",{"title":250,"path":251,"stem":252},"Synchronization Primitives","/csharp/system-internals-concurrency/synchronization-primitives","01.csharp/06.system-internals-concurrency/07.synchronization-primitives",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":59},"System Programming Windows","i-lucide-cpu","/csharp/system-programming-windows","01.csharp/07.system-programming-windows",[259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375],{"title":260,"path":261,"stem":262},"Як Працює Операційна Система","/csharp/system-programming-windows/how-os-works","01.csharp/07.system-programming-windows/01.how-os-works",{"title":264,"path":265,"stem":266},"Процеси в .NET — API та Запуск","/csharp/system-programming-windows/processes-in-dotnet","01.csharp/07.system-programming-windows/02.processes-in-dotnet",{"title":268,"path":269,"stem":270},"Процеси в .NET — IPC та Міжпроцесна Комунікація","/csharp/system-programming-windows/02a.processes-ipc","01.csharp/07.system-programming-windows/02a.processes-ipc",{"title":272,"path":273,"stem":274},"Application Domains та Збірки — AppDomain і AssemblyLoadContext","/csharp/system-programming-windows/appdomains-assemblies","01.csharp/07.system-programming-windows/03.appdomains-assemblies",{"title":276,"path":277,"stem":278},"Application Domains та Збірки — Plug-in Система з Hot-Reload","/csharp/system-programming-windows/03a.appdomains-plugin-system","01.csharp/07.system-programming-windows/03a.appdomains-plugin-system",{"title":280,"path":281,"stem":282},"Потоки — Основи та API Thread","/csharp/system-programming-windows/thread-fundamentals","01.csharp/07.system-programming-windows/04.thread-fundamentals",{"title":284,"path":285,"stem":286},"Потоки — Lifecycle, Пріоритети та Безпечне Завершення","/csharp/system-programming-windows/04a.thread-lifecycle-priorities","01.csharp/07.system-programming-windows/04a.thread-lifecycle-priorities",{"title":288,"path":289,"stem":290},"Проблеми Спільного Стану — Race Condition та Data Race","/csharp/system-programming-windows/shared-state-problems","01.csharp/07.system-programming-windows/05.shared-state-problems",{"title":292,"path":293,"stem":294},"Проблеми Спільного Стану — Memory Model та volatile","/csharp/system-programming-windows/05a.shared-state-memory-model","01.csharp/07.system-programming-windows/05a.shared-state-memory-model",{"title":296,"path":297,"stem":298},"Синхронізація — Monitor, lock та еволюція примітивів","/csharp/system-programming-windows/synchronization-fundamentals","01.csharp/07.system-programming-windows/06.synchronization-fundamentals",{"title":300,"path":301,"stem":302},"Синхронізація — Наскрізний Приклад та Deadlock Detection","/csharp/system-programming-windows/06a.synchronization-walkthrough","01.csharp/07.system-programming-windows/06a.synchronization-walkthrough",{"title":304,"path":305,"stem":306},"Синхронізація — Mutex, Semaphore та Event-Based Primitives","/csharp/system-programming-windows/synchronization-advanced","01.csharp/07.system-programming-windows/07.synchronization-advanced",{"title":308,"path":309,"stem":310},"Синхронізація — Interlocked, Volatile та Lock-Free Структури","/csharp/system-programming-windows/07a.synchronization-advanced-walkthrough","01.csharp/07.system-programming-windows/07a.synchronization-advanced-walkthrough",{"title":312,"path":313,"stem":314},"Interlocked, CAS та Lock-Free Структури","/csharp/system-programming-windows/interlocked-cas-lockfree","01.csharp/07.system-programming-windows/08.interlocked-cas-lockfree",{"title":316,"path":317,"stem":318},"Volatile, Memory Model та Spinning","/csharp/system-programming-windows/08a.volatile-memory-model","01.csharp/07.system-programming-windows/08a.volatile-memory-model",{"title":320,"path":321,"stem":322},"ThreadPool — Пул Потоків для Ефективного Виконання","/csharp/system-programming-windows/thread-pool","01.csharp/07.system-programming-windows/09.thread-pool",{"title":324,"path":325,"stem":326},"ThreadPool — Просунуті Сценарії та Внутрішня Будова","/csharp/system-programming-windows/09a.thread-pool-advanced","01.csharp/07.system-programming-windows/09a.thread-pool-advanced",{"title":328,"path":329,"stem":330},"Concurrent та Immutable Collections","/csharp/system-programming-windows/concurrent-collections","01.csharp/07.system-programming-windows/10.concurrent-collections",{"title":332,"path":333,"stem":334},"TPL, Task та Композиція — Від Thread до Task","/csharp/system-programming-windows/tpl-parallel-plinq","01.csharp/07.system-programming-windows/11.tpl-parallel-plinq",{"title":336,"path":337,"stem":338},"Parallel Class та PLINQ — Data Parallelism","/csharp/system-programming-windows/11a.tpl-parallel-plinq-advanced","01.csharp/07.system-programming-windows/11a.tpl-parallel-plinq-advanced",{"title":340,"path":341,"stem":342},"Async/Await — Фундамент Асинхронного Програмування","/csharp/system-programming-windows/async-fundamentals","01.csharp/07.system-programming-windows/12.async-fundamentals",{"title":344,"path":345,"stem":346},"SynchronizationContext та ConfigureAwait — Контекст Виконання","/csharp/system-programming-windows/async-context-configureawait","01.csharp/07.system-programming-windows/13.async-context-configureawait",{"title":348,"path":349,"stem":350},"Async — Просунуті Паттерни","/csharp/system-programming-windows/async-advanced","01.csharp/07.system-programming-windows/14.async-advanced",{"title":352,"path":353,"stem":354},"System.Threading.Channels — Async Producer-Consumer","/csharp/system-programming-windows/channels","01.csharp/07.system-programming-windows/15.channels",{"title":356,"path":357,"stem":358},"Асинхронна Синхронізація","/csharp/system-programming-windows/async-synchronization","01.csharp/07.system-programming-windows/16.async-synchronization",{"title":360,"path":361,"stem":362},"Unsafe Code та Вказівники","/csharp/system-programming-windows/unsafe-code","01.csharp/07.system-programming-windows/17.unsafe-code",{"title":364,"path":365,"stem":366},"P/Invoke та Windows API — Міст між .NET та Native Code","/csharp/system-programming-windows/pinvoke-winapi","01.csharp/07.system-programming-windows/18.pinvoke-winapi",{"title":368,"path":369,"stem":370},"Реєстр Windows — Центральна База Конфігурації Системи","/csharp/system-programming-windows/windows-registry","01.csharp/07.system-programming-windows/19.windows-registry",{"title":372,"path":373,"stem":374},"Windows Hooks, Hotkeys та Services — Глибока Інтеграція з ОС","/csharp/system-programming-windows/windows-hooks-services","01.csharp/07.system-programming-windows/20.windows-hooks-services",{"title":376,"path":377,"stem":378},"Системне Програмування C# (Windows) — 07.system-programming-windows","/csharp/system-programming-windows/implementation_plan","01.csharp/07.system-programming-windows/implementation_plan",{"title":380,"icon":132,"path":381,"stem":382,"children":383,"page":59},"Io","/csharp/io","01.csharp/08.io",[384,388,392,396,400],{"title":385,"path":386,"stem":387},"8.1.1. Основи роботи з файловою системою","/csharp/io/file-system-basics","01.csharp/08.io/01.file-system-basics",{"title":389,"path":390,"stem":391},"8.1.2. Потоки (Streams) та Серіалізація Даних","/csharp/io/streams-serialization","01.csharp/08.io/02.streams-serialization",{"title":393,"path":394,"stem":395},"8.2.1. JSON Serialization з System.Text.Json","/csharp/io/json-serialization","01.csharp/08.io/03.json-serialization",{"title":397,"path":398,"stem":399},"8.2.2. XML Serialization та LINQ to XML","/csharp/io/xml-serialization","01.csharp/08.io/04.xml-serialization",{"title":401,"path":402,"stem":403},"8.2.3. Binary Serialization: MessagePack та Protocol Buffers","/csharp/io/binary-serialization","01.csharp/08.io/05.binary-serialization",{"title":405,"icon":132,"path":406,"stem":407,"children":408,"page":59},"Ado Net","/csharp/ado-net","01.csharp/09.ado-net",[409,413,417,421,425,429,433,437,441,445,449,453],{"title":410,"path":411,"stem":412},"9.1. Введення в ADO.NET","/csharp/ado-net/introduction-to-adonet","01.csharp/09.ado-net/01.introduction-to-adonet",{"title":414,"path":415,"stem":416},"9.2. Клас DbConnection — з'єднання з базою даних","/csharp/ado-net/connection","01.csharp/09.ado-net/02.connection",{"title":418,"path":419,"stem":420},"9.3. Клас DbCommand — виконання SQL-запитів","/csharp/ado-net/command-and-queries","01.csharp/09.ado-net/03.command-and-queries",{"title":422,"path":423,"stem":424},"9.4. Клас DbDataReader — ефективне читання даних","/csharp/ado-net/datareader","01.csharp/09.ado-net/04.datareader",{"title":426,"path":427,"stem":428},"9.5. Параметризовані запити та захист від SQL Injection","/csharp/ado-net/parameters-and-sql-injection","01.csharp/09.ado-net/05.parameters-and-sql-injection",{"title":430,"path":431,"stem":432},"9.6. Транзакції в ADO.NET","/csharp/ado-net/transactions","01.csharp/09.ado-net/06.transactions",{"title":434,"path":435,"stem":436},"9.7. DbProviderFactory — провайдер-незалежний код","/csharp/ado-net/provider-factory","01.csharp/09.ado-net/07.provider-factory",{"title":438,"path":439,"stem":440},"9.8. Асинхронний доступ до даних","/csharp/ado-net/async-data-access","01.csharp/09.ado-net/08.async-data-access",{"title":442,"path":443,"stem":444},"9.9. Від'єднаний режим: DataSet, DataTable, DataRow","/csharp/ado-net/disconnected-mode-dataset","01.csharp/09.ado-net/09.disconnected-mode-dataset",{"title":446,"path":447,"stem":448},"9.10. DataAdapter — міст між DataSet та базою даних","/csharp/ado-net/data-adapter","01.csharp/09.ado-net/10.data-adapter",{"title":450,"path":451,"stem":452},"9.11. Data Mapper та Repository: Архітектура доступу до даних","/csharp/ado-net/data-mapper-repository","01.csharp/09.ado-net/11.data-mapper-repository",{"title":454,"path":455,"stem":456},"9.12. Identity Map, Unit of Work та Specification Pattern","/csharp/ado-net/advanced-patterns","01.csharp/09.ado-net/12.advanced-patterns",{"title":458,"icon":255,"path":459,"stem":460,"children":461,"page":59},"Ef Core","/csharp/ef-core","01.csharp/10.ef-core",[462,466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,532,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646],{"title":463,"path":464,"stem":465},"Що таке ORM? Від SQL до об'єктів","/csharp/ef-core/what-is-orm","01.csharp/10.ef-core/01.what-is-orm",{"title":467,"path":468,"stem":469},"Перший проєкт — від нуля до CRUD","/csharp/ef-core/first-project","01.csharp/10.ef-core/02.first-project",{"title":471,"path":472,"stem":473},"DbContext — Серце EF Core","/csharp/ef-core/dbcontext-deep-dive","01.csharp/10.ef-core/03.dbcontext-deep-dive",{"title":475,"path":476,"stem":477},"Провайдери баз даних — Архітектура та Вибір СУБД","/csharp/ef-core/database-providers","01.csharp/10.ef-core/04.database-providers",{"title":479,"path":480,"stem":481},"Конвенції EF Core — Магія без конфігурації","/csharp/ef-core/conventions","01.csharp/10.ef-core/05.conventions",{"title":483,"path":484,"stem":485},"Fluent API та Data Annotations — Явна конфігурація моделі","/csharp/ef-core/fluent-api-vs-annotations","01.csharp/10.ef-core/06.fluent-api-vs-annotations",{"title":487,"path":488,"stem":489},"Зв'язки — One-to-One та One-to-Many","/csharp/ef-core/relationships-basics","01.csharp/10.ef-core/07.relationships-basics",{"title":491,"path":492,"stem":493},"Зв'язки Advanced — Many-to-Many та Складні Сценарії","/csharp/ef-core/relationships-advanced","01.csharp/10.ef-core/08.relationships-advanced",{"title":495,"path":496,"stem":497},"Властивості — Типи, Конвертери, Компаратори (Частина 1)","/csharp/ef-core/property-configuration-part1","01.csharp/10.ef-core/09.property-configuration-part1",{"title":499,"path":500,"stem":501},"Властивості — Value Comparers, Generators, Shadow Properties (Частина 2)","/csharp/ef-core/property-configuration-part2","01.csharp/10.ef-core/09.property-configuration-part2",{"title":503,"path":504,"stem":505},"Складні типи — Owned Types та Complex Types (Частина 1)","/csharp/ef-core/complex-types-owned-part1","01.csharp/10.ef-core/10.complex-types-owned-part1",{"title":507,"path":508,"stem":509},"Складні типи — Complex Types, Keyless Entities, Порівняння (Частина 2)","/csharp/ef-core/complex-types-owned-part2","01.csharp/10.ef-core/10.complex-types-owned-part2",{"title":511,"path":512,"stem":513},"JSON Columns — Складні дані у JSON (Частина 1)","/csharp/ef-core/json-columns-part1","01.csharp/10.ef-core/11.json-columns-part1",{"title":515,"path":516,"stem":517},"JSON Columns — Value Comparers, Індекси, Провайдери (Частина 2)","/csharp/ef-core/json-columns-part2","01.csharp/10.ef-core/11.json-columns-part2",{"title":519,"path":520,"stem":521},"Успадкування — Абстрактні класи та TPH (Частина 1)","/csharp/ef-core/inheritance-part1","01.csharp/10.ef-core/12.inheritance-part1",{"title":523,"path":524,"stem":525},"Успадкування — TPT, TPC та Порівняння Стратегій (Частина 2)","/csharp/ef-core/inheritance-part2","01.csharp/10.ef-core/12.inheritance-part2",{"title":527,"path":528,"stem":529,"children":530},"Індекси, Обмеження та Схема (Частина 1)","/csharp/ef-core/indexes-constraints-part1","01.csharp/10.ef-core/13.indexes-constraints-part1",[531],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535,"children":536},"Індекси, Обмеження та Схема (Частина 2)","/csharp/ef-core/indexes-constraints-part2","01.csharp/10.ef-core/13.indexes-constraints-part2",[537],{"title":533,"path":534,"stem":535},{"title":539,"path":540,"stem":541},"Seed Data — Початкові Дані (Частина 1)","/csharp/ef-core/seeding-part1","01.csharp/10.ef-core/14.seeding-part1",{"title":543,"path":544,"stem":545},"Seed Data — SQL-скрипти, Bogus та Стратегії (Частина 2)","/csharp/ef-core/seeding-part2","01.csharp/10.ef-core/14.seeding-part2",{"title":547,"path":548,"stem":549},"Global Query Filters — Глобальні Фільтри (Частина 1)","/csharp/ef-core/global-query-filters-part1","01.csharp/10.ef-core/15.global-query-filters-part1",{"title":551,"path":552,"stem":553},"Global Query Filters — Підводні камені та Інтеграція (Частина 2)","/csharp/ef-core/global-query-filters-part2","01.csharp/10.ef-core/15.global-query-filters-part2",{"title":555,"path":556,"stem":557},"LINQ-запити в EF Core (Частина 1)","/csharp/ef-core/linq-queries-part1","01.csharp/10.ef-core/16.linq-queries-part1",{"title":559,"path":560,"stem":561},"LINQ-запити в EF Core (Частина 2)","/csharp/ef-core/linq-queries-part2","01.csharp/10.ef-core/16.linq-queries-part2",{"title":563,"path":564,"stem":565},"Завантаження Пов'язаних Даних (Частина 1)","/csharp/ef-core/loading-related-data-part1","01.csharp/10.ef-core/17.loading-related-data-part1",{"title":567,"path":568,"stem":569},"Завантаження Пов'язаних Даних (Частина 2)","/csharp/ef-core/loading-related-data-part2","01.csharp/10.ef-core/17.loading-related-data-part2",{"title":571,"path":572,"stem":573},"Raw SQL, Views та Stored Procedures (Частина 1)","/csharp/ef-core/raw-sql-part1","01.csharp/10.ef-core/18.raw-sql-part1",{"title":575,"path":576,"stem":577},"Raw SQL — Stored Procedures, DbFunction та Bulk Operations (Частина 2)","/csharp/ef-core/raw-sql-part2","01.csharp/10.ef-core/18.raw-sql-part2",{"title":579,"path":580,"stem":581},"Продвинуті Запити — Compiled Queries, Bulk та Оптимізація (Частина 1)","/csharp/ef-core/advanced-queries-part1","01.csharp/10.ef-core/19.advanced-queries-part1",{"title":583,"path":584,"stem":585},"Продвинуті Запити — Query Tags, Bulk та Interceptors (Частина 2)","/csharp/ef-core/advanced-queries-part2","01.csharp/10.ef-core/19.advanced-queries-part2",{"title":587,"path":588,"stem":589},"Change Tracker — Відстеження Змін (Частина 1)","/csharp/ef-core/change-tracking-part1","01.csharp/10.ef-core/20.change-tracking-part1",{"title":591,"path":592,"stem":593},"Change Tracker — Графи Об'єктів та Disconnected (Частина 2)","/csharp/ef-core/change-tracking-part2","01.csharp/10.ef-core/20.change-tracking-part2",{"title":595,"path":596,"stem":597},"Збереження Даних та Транзакції (Частина 1)","/csharp/ef-core/saving-data-part1","01.csharp/10.ef-core/21.saving-data-part1",{"title":599,"path":600,"stem":601},"Збереження Даних — Concurrency та Outbox (Частина 2)","/csharp/ef-core/saving-data-part2","01.csharp/10.ef-core/21.saving-data-part2",{"title":603,"path":604,"stem":605},"Конкурентність та Блокування (Частина 1)","/csharp/ef-core/concurrency-part1","01.csharp/10.ef-core/22.concurrency-part1",{"title":607,"path":608,"stem":609},"Конкурентність — Дедлоки та Queue Processing (Частина 2)","/csharp/ef-core/concurrency-part2","01.csharp/10.ef-core/22.concurrency-part2",{"title":611,"path":612,"stem":613},"Міграції в EF Core — Основи (Частина 1)","/csharp/ef-core/migrations-basics-part1","01.csharp/10.ef-core/23.migrations-basics-part1",{"title":615,"path":616,"stem":617},"Міграції в EF Core — Основи (Частина 2)","/csharp/ef-core/migrations-basics-part2","01.csharp/10.ef-core/23.migrations-basics-part2",{"title":619,"path":620,"stem":621},"Міграції — Просунуті Сценарії (Частина 1)","/csharp/ef-core/migrations-advanced-part1","01.csharp/10.ef-core/24.migrations-advanced-part1",{"title":623,"path":624,"stem":625},"Міграції — Просунуті Сценарії (Частина 2)","/csharp/ef-core/migrations-advanced-part2","01.csharp/10.ef-core/24.migrations-advanced-part2",{"title":627,"path":628,"stem":629},"Управління Схемою та Database-First (Частина 1)","/csharp/ef-core/schema-management-part1","01.csharp/10.ef-core/25.schema-management-part1",{"title":631,"path":632,"stem":633},"Управління Схемою та Database-First (Частина 2)","/csharp/ef-core/schema-management-part2","01.csharp/10.ef-core/25.schema-management-part2",{"title":635,"path":636,"stem":637},"Продуктивність EF Core — Основи (Частина 1)","/csharp/ef-core/performance-fundamentals-part1","01.csharp/10.ef-core/26.performance-fundamentals-part1",{"title":639,"path":640,"stem":641},"Interceptors в EF Core (Частина 1)","/csharp/ef-core/interceptors-part1","01.csharp/10.ef-core/29.interceptors-part1",{"title":643,"path":644,"stem":645},"Interceptors в EF Core — Connection, Transaction та Materialization (Частина 2)","/csharp/ef-core/interceptors-part2","01.csharp/10.ef-core/29.interceptors-part2",{"title":647,"path":648,"stem":649},"План вивчення Entity Framework Core — Повний курс","/csharp/ef-core/implementation_plan","01.csharp/10.ef-core/implementation_plan",{"title":651,"icon":652,"path":653,"stem":654,"children":655,"page":59},"ASP.NET","i-devicon-dotnetcore","/csharp/aspnet","01.csharp/11.aspnet",[656,730,791,869,927,941,967,1057,1111,1182,1212,1289],{"title":657,"icon":658,"path":659,"stem":660,"children":661,"page":59},"Minimal API","i-lucide-network","/csharp/aspnet/minimal-api","01.csharp/11.aspnet/01.minimal-api",[662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726],{"title":663,"path":664,"stem":665},"Вступ до ASP.NET та еволюція фреймворку","/csharp/aspnet/minimal-api/introduction","01.csharp/11.aspnet/01.minimal-api/01.introduction",{"title":667,"path":668,"stem":669},"Перший додаток на ASP.NET Core","/csharp/aspnet/minimal-api/first-application","01.csharp/11.aspnet/01.minimal-api/02.first-application",{"title":671,"path":672,"stem":673},"WebApplication, Builder та Dependency Injection","/csharp/aspnet/minimal-api/webapplication-builder","01.csharp/11.aspnet/01.minimal-api/03.webapplication-builder",{"title":675,"path":676,"stem":677},"Конвеєр запитів та Middleware","/csharp/aspnet/minimal-api/request-pipeline-middleware","01.csharp/11.aspnet/01.minimal-api/04.request-pipeline-middleware",{"title":679,"path":680,"stem":681},"Маршрутизація в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/routing-basics","01.csharp/11.aspnet/01.minimal-api/05.routing-basics",{"title":683,"path":684,"stem":685},"Маршрутизація в ASP.NET Core: Розширені можливості","/csharp/aspnet/minimal-api/routing-advanced","01.csharp/11.aspnet/01.minimal-api/06.routing-advanced",{"title":687,"path":688,"stem":689},"Статичні файли в ASP.NET Core","/csharp/aspnet/minimal-api/static-files","01.csharp/11.aspnet/01.minimal-api/07.static-files",{"title":691,"path":692,"stem":693},"Статичні Активи: MapStaticAssets (ASP.NET Core 9.0)","/csharp/aspnet/minimal-api/static-assets","01.csharp/11.aspnet/01.minimal-api/08.static-assets",{"title":695,"path":696,"stem":697},"Конфігурація в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/configuration-fundamentals","01.csharp/11.aspnet/01.minimal-api/09.configuration-fundamentals",{"title":699,"path":700,"stem":701},"Конфігурація: Паттерн Options","/csharp/aspnet/minimal-api/configuration-options","01.csharp/11.aspnet/01.minimal-api/10.configuration-options",{"title":703,"path":704,"stem":705},"Логування в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/logging-basics","01.csharp/11.aspnet/01.minimal-api/11.logging-basics",{"title":707,"path":708,"stem":709},"Логування: Serilog та Middleware","/csharp/aspnet/minimal-api/logging-advanced","01.csharp/11.aspnet/01.minimal-api/12.logging-advanced",{"title":711,"path":712,"stem":713},"Управління станом: HttpContext.Items та Cookies","/csharp/aspnet/minimal-api/state-management","01.csharp/11.aspnet/01.minimal-api/13.state-management",{"title":715,"path":716,"stem":717},"Стан сесії: Sessions","/csharp/aspnet/minimal-api/session-state","01.csharp/11.aspnet/01.minimal-api/14.session-state",{"title":719,"path":720,"stem":721},"Структура проєкту: від хаосу до архітектури","/csharp/aspnet/minimal-api/project-structure","01.csharp/11.aspnet/01.minimal-api/15.project-structure",{"title":723,"path":724,"stem":725},"Scalar у Minimal API: повний проєкт і Fluent OpenAPI","/csharp/aspnet/minimal-api/scalar-openapi-fluent","01.csharp/11.aspnet/01.minimal-api/16.scalar-openapi-fluent",{"title":727,"path":728,"stem":729},"Swagger / Swashbuckle у Minimal API: окремий класичний шлях","/csharp/aspnet/minimal-api/swagger-swashbuckle","01.csharp/11.aspnet/01.minimal-api/17.swagger-swashbuckle",{"title":731,"icon":658,"path":732,"stem":733,"children":734,"page":59},"API","/csharp/aspnet/api","01.csharp/11.aspnet/02.api",[735,739,743,747,751,755,759,763,767,771,775,779,783,787],{"title":736,"path":737,"stem":738},"Що таке API. Клієнт-серверна архітектура","/csharp/aspnet/api/what-is-api","01.csharp/11.aspnet/02.api/01.what-is-api",{"title":740,"path":741,"stem":742},"Формати даних: JSON, XML, TOML та бінарні формати","/csharp/aspnet/api/data-formats","01.csharp/11.aspnet/02.api/02.data-formats",{"title":744,"path":745,"stem":746},"Парадигми API та концепція REST","/csharp/aspnet/api/api-paradigms-rest","01.csharp/11.aspnet/02.api/03.api-paradigms-rest",{"title":748,"path":749,"stem":750},"HTTP-методи, статус-коди та заголовки","/csharp/aspnet/api/http-methods-status-codes","01.csharp/11.aspnet/02.api/04.http-methods-status-codes",{"title":752,"path":753,"stem":754},"Організація HTTP API за принципами REST","/csharp/aspnet/api/rest-organizing","01.csharp/11.aspnet/02.api/05.rest-organizing",{"title":756,"path":757,"stem":758},"Номенклатура URL та CRUD-операції","/csharp/aspnet/api/url-nomenclature-crud","01.csharp/11.aspnet/02.api/06.url-nomenclature-crud",{"title":760,"path":761,"stem":762},"Правила дизайну: іменування та стандарти","/csharp/aspnet/api/api-design-naming","01.csharp/11.aspnet/02.api/07.api-design-naming",{"title":764,"path":765,"stem":766},"Валідація, ліміти та обробка помилок","/csharp/aspnet/api/api-design-validation","01.csharp/11.aspnet/02.api/08.api-design-validation",{"title":768,"path":769,"stem":770},"Обробка помилок у Minimal API","/csharp/aspnet/api/error-handling-http","01.csharp/11.aspnet/02.api/09.error-handling-http",{"title":772,"path":773,"stem":774},"Ідемпотентність та синхронізація стану","/csharp/aspnet/api/idempotency-sync","01.csharp/11.aspnet/02.api/10.idempotency-sync",{"title":776,"path":777,"stem":778},"Пагінація та організація списків","/csharp/aspnet/api/pagination-lists","01.csharp/11.aspnet/02.api/11.pagination-lists",{"title":780,"path":781,"stem":782},"Безпека API, кешування та інтернаціоналізація","/csharp/aspnet/api/security-auth","01.csharp/11.aspnet/02.api/12.security-auth",{"title":784,"path":785,"stem":786},"Процес проєктування API та документування","/csharp/aspnet/api/api-design-process","01.csharp/11.aspnet/02.api/13.api-design-process",{"title":788,"path":789,"stem":790},"OpenAPI: контракт, специфікація та документація API","/csharp/aspnet/api/openapi","01.csharp/11.aspnet/02.api/14.openapi",{"title":792,"icon":793,"path":794,"stem":795,"children":796,"page":59},"Auth","i-lucide-shield-check","/csharp/aspnet/auth","01.csharp/11.aspnet/03.auth",[797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865],{"title":798,"path":799,"stem":800},"Основи аутентифікації та авторизації","/csharp/aspnet/auth/auth-fundamentals","01.csharp/11.aspnet/03.auth/01.auth-fundamentals",{"title":802,"path":803,"stem":804},"JWT-аутентифікація","/csharp/aspnet/auth/jwt-authentication","01.csharp/11.aspnet/03.auth/02.jwt-authentication",{"title":806,"path":807,"stem":808},"Авторизація: ролі, політики та resource-based доступ","/csharp/aspnet/auth/authorization-policies","01.csharp/11.aspnet/03.auth/03.authorization-policies",{"title":810,"path":811,"stem":812},"Cookie-аутентифікація та ASP.NET Core Identity","/csharp/aspnet/auth/cookie-auth-identity","01.csharp/11.aspnet/03.auth/04.cookie-auth-identity",{"title":814,"path":815,"stem":816},"JWT + Refresh Tokens (HttpOnly Cookie)","/csharp/aspnet/auth/04b.identity-auth-jwt","01.csharp/11.aspnet/03.auth/04b.identity-auth-jwt",{"title":818,"path":819,"stem":820},"Identity: Підтвердження Email та Скидання Пароля","/csharp/aspnet/auth/identity-email-confirmation","01.csharp/11.aspnet/03.auth/05.identity-email-confirmation",{"title":822,"path":823,"stem":824},"Identity: Двофакторна Аутентифікація (2FA)","/csharp/aspnet/auth/identity-two-factor","01.csharp/11.aspnet/03.auth/06.identity-two-factor",{"title":826,"path":827,"stem":828},"Identity: Внутрішня Архітектура та Кастомізація","/csharp/aspnet/auth/identity-internals","01.csharp/11.aspnet/03.auth/07.identity-internals",{"title":830,"path":831,"stem":832},"OAuth 2.0 та зовнішні провайдери","/csharp/aspnet/auth/oauth-external-providers","01.csharp/11.aspnet/03.auth/08.oauth-external-providers",{"title":834,"path":835,"stem":836},"Безпека на практиці: CORS, HTTPS та захист від атак","/csharp/aspnet/auth/security-hardening","01.csharp/11.aspnet/03.auth/09.security-hardening",{"title":838,"path":839,"stem":840},"Теорія OAuth 2.0: Поняття, Аналогії та Флоу","/csharp/aspnet/auth/oauth-theory","01.csharp/11.aspnet/03.auth/10.oauth-theory",{"title":842,"path":843,"stem":844},"OIDC, OAuth 2.0 та Keycloak в ASP.NET Core","/csharp/aspnet/auth/oidc-keycloak","01.csharp/11.aspnet/03.auth/10.oidc-keycloak",{"title":846,"path":847,"stem":848},"API Keys аутентифікація в ASP.NET Core","/csharp/aspnet/auth/api-keys","01.csharp/11.aspnet/03.auth/11.api-keys",{"title":850,"path":851,"stem":852},"Rate Limiting та Throttling в ASP.NET Core","/csharp/aspnet/auth/rate-limiting","01.csharp/11.aspnet/03.auth/12.rate-limiting",{"title":854,"path":855,"stem":856},"Refresh Token Rotation в ASP.NET Core","/csharp/aspnet/auth/refresh-token-rotation","01.csharp/11.aspnet/03.auth/13.refresh-token-rotation",{"title":858,"path":859,"stem":860},"Certificate Authentication та mTLS в ASP.NET Core","/csharp/aspnet/auth/certificate-auth","01.csharp/11.aspnet/03.auth/14.certificate-auth",{"title":862,"path":863,"stem":864},"RBAC, ABAC та ReBAC в ASP.NET Core","/csharp/aspnet/auth/rbac-abac-rebac","01.csharp/11.aspnet/03.auth/15.rbac-abac-rebac",{"title":866,"path":867,"stem":868},"Multi-tenancy та ізоляція даних в ASP.NET Core","/csharp/aspnet/auth/multi-tenancy","01.csharp/11.aspnet/03.auth/16.multi-tenancy",{"title":870,"icon":871,"path":872,"stem":873,"children":874,"page":59},"Нотифікації","i-lucide-bell","/csharp/aspnet/notifications","01.csharp/11.aspnet/04.notifications",[875,879,883,887,891,895,899,903,907,911,915,919,923],{"title":876,"path":877,"stem":878},"In-App нотифікації через базу даних","/csharp/aspnet/notifications/in-app-database-notifications","01.csharp/11.aspnet/04.notifications/01.in-app-database-notifications",{"title":880,"path":881,"stem":882},"Polling: Регулярний запит оновлень","/csharp/aspnet/notifications/polling","01.csharp/11.aspnet/04.notifications/02.polling",{"title":884,"path":885,"stem":886},"Server-Sent Events: Однострімовий push від сервера","/csharp/aspnet/notifications/server-sent-events","01.csharp/11.aspnet/04.notifications/03.server-sent-events",{"title":888,"path":889,"stem":890},"WebSockets: Двостороннє з'єднання в реальному часі","/csharp/aspnet/notifications/websockets","01.csharp/11.aspnet/04.notifications/04.websockets",{"title":892,"path":893,"stem":894},"SignalR: Абстракція над транспортами реального часу","/csharp/aspnet/notifications/signalr","01.csharp/11.aspnet/04.notifications/05.signalr",{"title":896,"path":897,"stem":898},"Background Services: Фонові задачі в ASP.NET Core","/csharp/aspnet/notifications/background-services","01.csharp/11.aspnet/04.notifications/06.background-services",{"title":900,"path":901,"stem":902},"Web Push нотифікації","/csharp/aspnet/notifications/web-push","01.csharp/11.aspnet/04.notifications/07.web-push",{"title":904,"path":905,"stem":906},"Email нотифікації","/csharp/aspnet/notifications/email-notifications","01.csharp/11.aspnet/04.notifications/08.email-notifications",{"title":908,"path":909,"stem":910},"Порівняння підходів: Як вибрати правильну технологію нотифікацій","/csharp/aspnet/notifications/choosing-the-right-approach","01.csharp/11.aspnet/04.notifications/09.choosing-the-right-approach",{"title":912,"path":913,"stem":914},"Hangfire: Надійне планування фонових задач","/csharp/aspnet/notifications/hangfire","01.csharp/11.aspnet/04.notifications/10.hangfire",{"title":916,"path":917,"stem":918},"Практика: Конвертація зображень у WebP через Hangfire","/csharp/aspnet/notifications/hangfire-image-webp","01.csharp/11.aspnet/04.notifications/11.hangfire-image-webp",{"title":920,"path":921,"stem":922},"Практика: Підготовка відео до HLS-стрімінгу через Hangfire","/csharp/aspnet/notifications/hangfire-video-hls","01.csharp/11.aspnet/04.notifications/12.hangfire-video-hls",{"title":924,"path":925,"stem":926},"Telegram-нотифікації: від одного повідомлення до масових розсилок і мульти-канального підходу","/csharp/aspnet/notifications/telegram-notifications","01.csharp/11.aspnet/04.notifications/13.telegram-notifications",{"title":928,"icon":929,"path":930,"stem":931,"children":932,"page":59},"Інтернаціоналізація","i-lucide-languages","/csharp/aspnet/i18n","01.csharp/11.aspnet/05.i18n",[933,937],{"title":934,"path":935,"stem":936},"Інтернаціоналізація (i18n) у Minimal API: від A до Я","/csharp/aspnet/i18n/internationalization","01.csharp/11.aspnet/05.i18n/01.internationalization",{"title":938,"path":939,"stem":940},"Humanizer: людиномовні рядки у .NET","/csharp/aspnet/i18n/humanizer","01.csharp/11.aspnet/05.i18n/02.humanizer",{"title":942,"icon":943,"path":944,"stem":945,"children":946,"page":59},"Кешування","i-lucide-layers","/csharp/aspnet/caching","01.csharp/11.aspnet/06.caching",[947,951,955,959,963],{"title":948,"path":949,"stem":950},"Огляд кешування: чотири рівні і коли що обирати","/csharp/aspnet/caching/caching","01.csharp/11.aspnet/06.caching/01.caching",{"title":952,"path":953,"stem":954},"IMemoryCache: кеш в оперативній пам'яті","/csharp/aspnet/caching/memory-cache","01.csharp/11.aspnet/06.caching/02.memory-cache",{"title":956,"path":957,"stem":958},"IDistributedCache і Redis: розподілений кеш","/csharp/aspnet/caching/distributed-cache","01.csharp/11.aspnet/06.caching/03.distributed-cache",{"title":960,"path":961,"stem":962},"Response Cache: HTTP-кешування через Cache-Control","/csharp/aspnet/caching/response-cache","01.csharp/11.aspnet/06.caching/04.response-cache",{"title":964,"path":965,"stem":966},"Output Cache: серверний кеш HTTP-відповідей (.NET 7+)","/csharp/aspnet/caching/output-cache","01.csharp/11.aspnet/06.caching/05.output-cache",{"title":968,"icon":969,"path":970,"stem":971,"children":972,"page":59},"Тестування","i-lucide-test-tube","/csharp/aspnet/testing","01.csharp/11.aspnet/07.testing",[973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053],{"title":974,"path":975,"stem":976},"Що таке тестування? Від інтуїції до науки","/csharp/aspnet/testing/what-is-testing","01.csharp/11.aspnet/07.testing/01.what-is-testing",{"title":978,"path":979,"stem":980},"Піраміда тестування — Стратегія, а не Догма","/csharp/aspnet/testing/testing-pyramid","01.csharp/11.aspnet/07.testing/02.testing-pyramid",{"title":982,"path":983,"stem":984},"Дві Школи Тестування — Лондон проти Детройту","/csharp/aspnet/testing/testing-schools","01.csharp/11.aspnet/07.testing/03.testing-schools",{"title":986,"path":987,"stem":988},"TDD та BDD — Тести як Дизайн-інструмент","/csharp/aspnet/testing/tdd-and-bdd","01.csharp/11.aspnet/07.testing/04.tdd-and-bdd",{"title":990,"path":991,"stem":992},"Що саме тестувати — Техніки аналізу та Циклomatична складність","/csharp/aspnet/testing/what-to-test","01.csharp/11.aspnet/07.testing/05.what-to-test",{"title":994,"path":995,"stem":996},"Тестові Фреймворки — Навіщо вони і що всередині","/csharp/aspnet/testing/test-frameworks","01.csharp/11.aspnet/07.testing/06.test-frameworks",{"title":998,"path":999,"stem":1000},"xUnit — Факти, Теорії та Lifecycle тестів","/csharp/aspnet/testing/xunit-basics","01.csharp/11.aspnet/07.testing/07.xunit-basics",{"title":1002,"path":1003,"stem":1004},"xUnit Advanced — Fixtures, Кастомізація та Розширення","/csharp/aspnet/testing/xunit-advanced","01.csharp/11.aspnet/07.testing/08.xunit-advanced",{"title":1006,"path":1007,"stem":1008},"Moq — Глибоке занурення в мокування","/csharp/aspnet/testing/mocking-with-moq","01.csharp/11.aspnet/07.testing/09.mocking-with-moq",{"title":1010,"path":1011,"stem":1012},"Тестування Баз Даних — EF Core, SQLite та Testcontainers","/csharp/aspnet/testing/database-testing","01.csharp/11.aspnet/07.testing/10.database-testing",{"title":1014,"path":1015,"stem":1016},"Integration Testing — Частина 1 [Теорія та WebApplicationFactory]","/csharp/aspnet/testing/integration-testing","01.csharp/11.aspnet/07.testing/11.integration-testing",{"title":1018,"path":1019,"stem":1020},"Інтеграційне тестування — Практика","/csharp/aspnet/testing/11a.integration-testing-practice","01.csharp/11.aspnet/07.testing/11a.integration-testing-practice",{"title":1022,"path":1023,"stem":1024},"Integration Testing — Частина 2 [Просунуті Сценарії та Testcontainers]","/csharp/aspnet/testing/integration-testing-advanced","01.csharp/11.aspnet/07.testing/12.integration-testing-advanced",{"title":1026,"path":1027,"stem":1028},"Професійний Postman: Колекції, Змінні та GitHub Інтеграція","/csharp/aspnet/testing/postman-professional","01.csharp/11.aspnet/07.testing/13.postman-professional",{"title":1030,"path":1031,"stem":1032},"HttpClient у Тестах Частина 1: Архітектура та MockHttpMessageHandler","/csharp/aspnet/testing/httpclient-testing","01.csharp/11.aspnet/07.testing/14.httpclient-testing",{"title":1034,"path":1035,"stem":1036},"HttpClient у Тестах Частина 2: WireMock.Net та Resilience","/csharp/aspnet/testing/wiremock-net","01.csharp/11.aspnet/07.testing/15.wiremock-net",{"title":1038,"path":1039,"stem":1040},"Патерни та Анти-патерни Тестування: Test Smells","/csharp/aspnet/testing/testing-patterns","01.csharp/11.aspnet/07.testing/16.testing-patterns",{"title":1042,"path":1043,"stem":1044},"Просунуті інструменти: Time, Snapshots та Властивості","/csharp/aspnet/testing/advanced-testing-tools","01.csharp/11.aspnet/07.testing/17.advanced-testing-tools",{"title":1046,"path":1047,"stem":1048},"Тестування Архітектури з NetArchTest","/csharp/aspnet/testing/architecture-testing","01.csharp/11.aspnet/07.testing/18.architecture-testing",{"title":1050,"path":1051,"stem":1052},"Тестування Продуктивності: BenchmarkDotNet, NBomber та k6","/csharp/aspnet/testing/performance-testing","01.csharp/11.aspnet/07.testing/19.performance-testing",{"title":1054,"path":1055,"stem":1056},"Залишок плану для курсу \"Тестування ASP.NET Minimal API\"","/csharp/aspnet/testing/remaining_plan","01.csharp/11.aspnet/07.testing/remaining_plan",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":59},"Платежі","i-lucide-credit-card","/csharp/aspnet/payments","01.csharp/11.aspnet/08.payments",[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103,1107],{"title":1064,"path":1065,"stem":1066},"Основи платіжної інфраструктури","/csharp/aspnet/payments/payment-fundamentals","01.csharp/11.aspnet/08.payments/01.payment-fundamentals",{"title":1068,"path":1069,"stem":1070},"Методи оплати в Україні","/csharp/aspnet/payments/payment-methods-ukraine","01.csharp/11.aspnet/08.payments/02.payment-methods-ukraine",{"title":1072,"path":1073,"stem":1074},"PCI DSS та безпека платежів","/csharp/aspnet/payments/pci-dss-security","01.csharp/11.aspnet/08.payments/03.pci-dss-security",{"title":1076,"path":1077,"stem":1078},"Архітектура платіжної підсистеми","/csharp/aspnet/payments/payment-architecture","01.csharp/11.aspnet/08.payments/04.payment-architecture",{"title":1080,"path":1081,"stem":1082},"Інтеграція LiqPay (ПриватБанк)","/csharp/aspnet/payments/liqpay-integration","01.csharp/11.aspnet/08.payments/05.liqpay-integration",{"title":1084,"path":1085,"stem":1086},"Інтеграція Monobank Acquiring API","/csharp/aspnet/payments/monobank-acquiring","01.csharp/11.aspnet/08.payments/06.monobank-acquiring",{"title":1088,"path":1089,"stem":1090},"Інтеграція Stripe","/csharp/aspnet/payments/stripe-integration","01.csharp/11.aspnet/08.payments/07.stripe-integration",{"title":1092,"path":1093,"stem":1094},"Webhooks — глибоке занурення","/csharp/aspnet/payments/webhooks-deep-dive","01.csharp/11.aspnet/08.payments/08.webhooks-deep-dive",{"title":1096,"path":1097,"stem":1098},"Підписки та рекурентні платежі","/csharp/aspnet/payments/subscriptions-recurring","01.csharp/11.aspnet/08.payments/09.subscriptions-recurring",{"title":1100,"path":1101,"stem":1102},"Повернення коштів та диспути","/csharp/aspnet/payments/refunds-disputes","01.csharp/11.aspnet/08.payments/10.refunds-disputes",{"title":1104,"path":1105,"stem":1106},"Тестування платіжних інтеграцій","/csharp/aspnet/payments/testing-payments","01.csharp/11.aspnet/08.payments/11.testing-payments",{"title":1108,"path":1109,"stem":1110},"Чекліст виходу в Production","/csharp/aspnet/payments/production-checklist","01.csharp/11.aspnet/08.payments/12.production-checklist",{"title":1112,"icon":1113,"items":1114,"path":1127,"stem":1128,"children":1129,"page":59},"Популярні бібліотеки","lucide:box",[1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],"01.fluent-validation","02.mapster","03.erroror-result-pattern","04.serilog","05.mediatr","06.polly","07.health-checks","08.feature-management","09.fluent-email","10.quest-pdf","11.bogus","12.humanizer-guard","/csharp/aspnet/libraries","01.csharp/11.aspnet/09.libraries",[1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178],{"title":1131,"path":1132,"stem":1133},"Валідація з FluentValidation в ASP.NET Core","/csharp/aspnet/libraries/fluent-validation","01.csharp/11.aspnet/09.libraries/01.fluent-validation",{"title":1135,"path":1136,"stem":1137},"Маппінг об","/csharp/aspnet/libraries/mapster","01.csharp/11.aspnet/09.libraries/02.mapster",{"title":1139,"path":1140,"stem":1141},"Обробка помилок з ErrorOr та Result Pattern в ASP.NET Core","/csharp/aspnet/libraries/erroror-result-pattern","01.csharp/11.aspnet/09.libraries/03.erroror-result-pattern",{"title":1143,"path":1144,"stem":1145},"Структуроване логування з Serilog в ASP.NET Core","/csharp/aspnet/libraries/serilog","01.csharp/11.aspnet/09.libraries/04.serilog",{"title":1147,"path":1148,"stem":1149},"CQRS та Mediator з MediatR в ASP.NET Core","/csharp/aspnet/libraries/mediatr","01.csharp/11.aspnet/09.libraries/05.mediatr",{"title":1151,"path":1152,"stem":1153},"Відмовостійкість з Polly в ASP.NET Core","/csharp/aspnet/libraries/polly","01.csharp/11.aspnet/09.libraries/06.polly",{"title":1155,"path":1156,"stem":1157},"Health Checks в ASP.NET Core","/csharp/aspnet/libraries/health-checks","01.csharp/11.aspnet/09.libraries/07.health-checks",{"title":1159,"path":1160,"stem":1161},"Feature Management та Feature Flags в ASP.NET Core","/csharp/aspnet/libraries/feature-management","01.csharp/11.aspnet/09.libraries/08.feature-management",{"title":1163,"path":1164,"stem":1165},"Відправка Email з FluentEmail в ASP.NET Core","/csharp/aspnet/libraries/fluent-email","01.csharp/11.aspnet/09.libraries/09.fluent-email",{"title":1167,"path":1168,"stem":1169},"Генерація PDF з QuestPDF в ASP.NET Core","/csharp/aspnet/libraries/quest-pdf","01.csharp/11.aspnet/09.libraries/10.quest-pdf",{"title":1171,"path":1172,"stem":1173},"Генерація тестових даних з Bogus в ASP.NET Core","/csharp/aspnet/libraries/bogus","01.csharp/11.aspnet/09.libraries/11.bogus",{"title":1175,"path":1176,"stem":1177},"Humanizer та Guard Clauses в ASP.NET Core","/csharp/aspnet/libraries/humanizer-guard","01.csharp/11.aspnet/09.libraries/12.humanizer-guard",{"title":1179,"path":1180,"stem":1181},"План модуля 10.libraries — Популярні бібліотеки ASP.NET","/csharp/aspnet/libraries/plan","01.csharp/11.aspnet/09.libraries/plan",{"title":1183,"icon":1184,"path":1185,"stem":1186,"children":1187,"page":59},"Razor Pages","i-lucide-layout-template","/csharp/aspnet/razor-pages","01.csharp/11.aspnet/10.razor-pages",[1188,1192,1196,1200,1204,1208],{"title":1189,"path":1190,"stem":1191},"Від Minimal API до Razor Pages: концептуальний перехід","/csharp/aspnet/razor-pages/from-minimal-api","01.csharp/11.aspnet/10.razor-pages/01.from-minimal-api",{"title":1193,"path":1194,"stem":1195},"PageModel: логіка сторінки Razor Pages","/csharp/aspnet/razor-pages/page-model","01.csharp/11.aspnet/10.razor-pages/02.page-model",{"title":1197,"path":1198,"stem":1199},"Razor синтаксис: шаблонізатор у .cshtml","/csharp/aspnet/razor-pages/razor-syntax","01.csharp/11.aspnet/10.razor-pages/03.razor-syntax",{"title":1201,"path":1202,"stem":1203},"Tag Helpers: типізований HTML","/csharp/aspnet/razor-pages/tag-helpers","01.csharp/11.aspnet/10.razor-pages/04.tag-helpers",{"title":1205,"path":1206,"stem":1207},"Форми і валідація: повний цикл обробки даних","/csharp/aspnet/razor-pages/forms-validation","01.csharp/11.aspnet/10.razor-pages/05.forms-validation",{"title":1209,"path":1210,"stem":1211},"Практичний проєкт: TaskManager на Razor Pages","/csharp/aspnet/razor-pages/project-task-manager","01.csharp/11.aspnet/10.razor-pages/06.project-task-manager",{"title":1213,"path":1214,"stem":1215,"children":1216,"page":59},"ASP.NET Core MVC","/csharp/aspnet/mvc","01.csharp/11.aspnet/11.mvc",[1217,1221,1225,1229,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285],{"title":1218,"path":1219,"stem":1220},"Патерн MVC: архітектура, що змінила веб","/csharp/aspnet/mvc/mvc-pattern","01.csharp/11.aspnet/11.mvc/01.mvc-pattern",{"title":1222,"path":1223,"stem":1224},"Від Razor Pages до MVC: концептуальний перехід","/csharp/aspnet/mvc/from-razor-pages","01.csharp/11.aspnet/11.mvc/02.from-razor-pages",{"title":1226,"path":1227,"stem":1228},"Controllers та Actions: серце MVC","/csharp/aspnet/mvc/controllers-actions","01.csharp/11.aspnet/11.mvc/03.controllers-actions",{"title":1230,"path":1231,"stem":1232},"Маршрутизація в MVC: Convention vs Attribute Routing","/csharp/aspnet/mvc/routing-mvc","01.csharp/11.aspnet/11.mvc/04.routing-mvc",{"title":1234,"path":1235,"stem":1236},"Model Binding: від HTTP до C#","/csharp/aspnet/mvc/model-binding","01.csharp/11.aspnet/11.mvc/05.model-binding",{"title":1238,"path":1239,"stem":1240},"Views, ViewData, ViewBag, TempData і ViewModel","/csharp/aspnet/mvc/views-viewdata-tempdata","01.csharp/11.aspnet/11.mvc/06.views-viewdata-tempdata",{"title":1242,"path":1243,"stem":1244},"Filters: аспектно-орієнтоване програмування в MVC","/csharp/aspnet/mvc/filters","01.csharp/11.aspnet/11.mvc/07.filters",{"title":1246,"path":1247,"stem":1248},"Areas: структурування великих застосунків","/csharp/aspnet/mvc/areas","01.csharp/11.aspnet/11.mvc/08.areas",{"title":1250,"path":1251,"stem":1252},"View Components: повторювані незалежні блоки UI","/csharp/aspnet/mvc/view-components","01.csharp/11.aspnet/11.mvc/09.view-components",{"title":1254,"path":1255,"stem":1256},"Display та Editor Templates","/csharp/aspnet/mvc/display-editor-templates","01.csharp/11.aspnet/11.mvc/10.display-editor-templates",{"title":1258,"path":1259,"stem":1260},"Валідація: IValidatableObject та FluentValidation","/csharp/aspnet/mvc/validation-advanced","01.csharp/11.aspnet/11.mvc/11.validation-advanced",{"title":1262,"path":1263,"stem":1264},"HTMX: інтерактивність через HTML-атрибути","/csharp/aspnet/mvc/htmx","01.csharp/11.aspnet/11.mvc/12.htmx",{"title":1266,"path":1267,"stem":1268},"HTMX у ASP.NET Core MVC: серверна інтеграція","/csharp/aspnet/mvc/ajax-htmx-mvc","01.csharp/11.aspnet/11.mvc/13.ajax-htmx-mvc",{"title":1270,"path":1271,"stem":1272},"Практичний проєкт: Каталог товарів з HTMX","/csharp/aspnet/mvc/htmx-project","01.csharp/11.aspnet/11.mvc/14.htmx-project",{"title":1274,"path":1275,"stem":1276},"Завантаження та обробка файлів","/csharp/aspnet/mvc/file-upload","01.csharp/11.aspnet/11.mvc/15.file-upload",{"title":1278,"path":1279,"stem":1280},"Глобалізація та Локалізація MVC","/csharp/aspnet/mvc/globalization-localization","01.csharp/11.aspnet/11.mvc/16.globalization-localization",{"title":1282,"path":1283,"stem":1284},"Підсумковий проєкт: Блог-платформа","/csharp/aspnet/mvc/mvc-project","01.csharp/11.aspnet/11.mvc/17.mvc-project",{"title":1286,"path":1287,"stem":1288},"План курсу: ASP.NET Core MVC","/csharp/aspnet/mvc/plan","01.csharp/11.aspnet/11.mvc/plan",{"title":1290,"path":1291,"stem":1292,"children":1293,"page":59},"Web Api","/csharp/aspnet/web-api","01.csharp/11.aspnet/12.web-api",[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342],{"title":1295,"path":1296,"stem":1297},"Від Minimal API до Controller-based API","/csharp/aspnet/web-api/from-minimal-api-to-controllers","01.csharp/11.aspnet/12.web-api/01.from-minimal-api-to-controllers",{"title":1299,"path":1300,"stem":1301},"ControllerBase, ActionResult\u003CT> та Response Types","/csharp/aspnet/web-api/controller-base-actionresult","01.csharp/11.aspnet/12.web-api/02.controller-base-actionresult",{"title":1303,"path":1304,"stem":1305},"Content Negotiation - JSON, XML та власні форматери","/csharp/aspnet/web-api/content-negotiation","01.csharp/11.aspnet/12.web-api/03.content-negotiation",{"title":1307,"path":1308,"stem":1309},"Версіонування API","/csharp/aspnet/web-api/api-versioning","01.csharp/11.aspnet/12.web-api/04.api-versioning",{"title":1311,"path":1312,"stem":1313},"ProblemDetails та структурована обробка помилок","/csharp/aspnet/web-api/problemdetails-error-handling","01.csharp/11.aspnet/12.web-api/05.problemdetails-error-handling",{"title":1315,"path":1316,"stem":1317},"Фільтри у Web API контексті","/csharp/aspnet/web-api/filters-for-api","01.csharp/11.aspnet/12.web-api/06.filters-for-api",{"title":1319,"path":1320,"stem":1321},"Пагінація, фільтрація та сортування","/csharp/aspnet/web-api/pagination-filtering-sorting","01.csharp/11.aspnet/12.web-api/07.pagination-filtering-sorting",{"title":1323,"path":1324,"stem":1325},"HATEOAS та Resource Expansion","/csharp/aspnet/web-api/hateoas-resource-expansion","01.csharp/11.aspnet/12.web-api/08.hateoas-resource-expansion",{"title":1327,"path":1328,"stem":1329},"Гібридна архітектура - Minimal API + Controllers","/csharp/aspnet/web-api/minimal-api-vs-controllers-hybrid","01.csharp/11.aspnet/12.web-api/09.minimal-api-vs-controllers-hybrid",{"title":1331,"path":1332,"stem":1333},"Документація API - Swashbuckle, NSwag та генерація клієнтів","/csharp/aspnet/web-api/api-documentation-generation","01.csharp/11.aspnet/12.web-api/10.api-documentation-generation",{"title":1335,"path":1336,"stem":1337},"Health Checks та моніторинг API","/csharp/aspnet/web-api/health-checks-monitoring","01.csharp/11.aspnet/12.web-api/11.health-checks-monitoring",{"title":1339,"path":1340,"stem":1341},"Підсумковий проєкт - Production-Ready REST API","/csharp/aspnet/web-api/web-api-project","01.csharp/11.aspnet/12.web-api/12.web-api-project",{"title":1343,"path":1344,"stem":1345},"План курсу: ASP.NET Core Web API (Controllers)","/csharp/aspnet/web-api/plan","01.csharp/11.aspnet/12.web-api/plan",{"title":1347,"icon":1348,"path":1349,"stem":1350,"children":1351,"page":59},"Desktop UI","i-lucide-app-window","/csharp/desktop-ui","01.csharp/12.desktop-ui",[1352,1356,1360,1364,1368,1372,1376,1380,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436,1440,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524,1528,1532,1536,1540,1544,1548,1552,1556,1560,1564,1568,1572,1576,1580,1584,1588,1592,1596,1600,1604,1608,1612,1616,1620,1624,1628,1632],{"title":1353,"path":1354,"stem":1355},"Що таке десктопна розробка?","/csharp/desktop-ui/what-is-desktop-dev","01.csharp/12.desktop-ui/01.what-is-desktop-dev",{"title":1357,"path":1358,"stem":1359},"Архітектура WPF — як влаштований графічний інтерфейс","/csharp/desktop-ui/wpf-architecture","01.csharp/12.desktop-ui/02.wpf-architecture",{"title":1361,"path":1362,"stem":1363},"Перший WPF-проєкт — від нуля до вікна","/csharp/desktop-ui/first-wpf-app","01.csharp/12.desktop-ui/03.first-wpf-app",{"title":1365,"path":1366,"stem":1367},"Перший Avalonia-проєкт: WPF для всіх платформ","/csharp/desktop-ui/03a.first-avalonia-app","01.csharp/12.desktop-ui/03a.first-avalonia-app",{"title":1369,"path":1370,"stem":1371},"XAML: декларативний інтерфейс","/csharp/desktop-ui/xaml-basics","01.csharp/12.desktop-ui/04.xaml-basics",{"title":1373,"path":1374,"stem":1375},"Fluent UI у WPF — сучасний дизайн Windows 11","/csharp/desktop-ui/04a.wpf-fluent-ui","01.csharp/12.desktop-ui/04a.wpf-fluent-ui",{"title":1377,"path":1378,"stem":1379},"WPF UI — сучасна бібліотека Fluent контролів","/csharp/desktop-ui/04b.wpf-ui-library","01.csharp/12.desktop-ui/04b.wpf-ui-library",{"title":1381,"path":1382,"stem":1383},"HandyControl — велика бібліотека UI контролів для WPF","/csharp/desktop-ui/04c.handycontrol-library","01.csharp/12.desktop-ui/04c.handycontrol-library",{"title":1385,"path":1386,"stem":1387},"Простори імен та ресурси XAML","/csharp/desktop-ui/xaml-namespaces-resources","01.csharp/12.desktop-ui/05.xaml-namespaces-resources",{"title":1389,"path":1390,"stem":1391},"XAML в Avalonia: ключові відмінності від WPF","/csharp/desktop-ui/05a.avalonia-xaml-differences","01.csharp/12.desktop-ui/05a.avalonia-xaml-differences",{"title":1393,"path":1394,"stem":1395},"Розширення розмітки XAML (Markup Extensions)","/csharp/desktop-ui/xaml-markup-extensions","01.csharp/12.desktop-ui/06.xaml-markup-extensions",{"title":1397,"path":1398,"stem":1399},"Панелі Layout: StackPanel, WrapPanel, DockPanel","/csharp/desktop-ui/layout-panels-part1","01.csharp/12.desktop-ui/07.layout-panels-part1",{"title":1401,"path":1402,"stem":1403},"Grid, Canvas, UniformGrid","/csharp/desktop-ui/layout-panels-part2","01.csharp/12.desktop-ui/07.layout-panels-part2",{"title":1405,"path":1406,"stem":1407},"Просунуті техніки Layout","/csharp/desktop-ui/layout-advanced","01.csharp/12.desktop-ui/08.layout-advanced",{"title":1409,"path":1410,"stem":1411},"Адаптивний Layout та найкращі практики","/csharp/desktop-ui/layout-responsive","01.csharp/12.desktop-ui/09.layout-responsive",{"title":1413,"path":1414,"stem":1415},"Layout в Avalonia: відмінності та нові можливості","/csharp/desktop-ui/09a.layout-avalonia","01.csharp/12.desktop-ui/09a.layout-avalonia",{"title":1417,"path":1418,"stem":1419},"Button, Image, ProgressBar та інші базові контроли","/csharp/desktop-ui/basic-controls","01.csharp/12.desktop-ui/10.basic-controls",{"title":1421,"path":1422,"stem":1423},"Контроли в Avalonia: відмінності від WPF","/csharp/desktop-ui/10a.controls-avalonia","01.csharp/12.desktop-ui/10a.controls-avalonia",{"title":1425,"path":1426,"stem":1427},"Текстові контроли — TextBlock, TextBox, RichTextBox","/csharp/desktop-ui/text-controls","01.csharp/12.desktop-ui/11.text-controls",{"title":1429,"path":1430,"stem":1431},"Контроли вибору — CheckBox, RadioButton, ComboBox, ListBox, DatePicker","/csharp/desktop-ui/selection-controls","01.csharp/12.desktop-ui/12.selection-controls",{"title":1433,"path":1434,"stem":1435},"Content Model — GroupBox, Expander, TabControl, StatusBar","/csharp/desktop-ui/content-controls","01.csharp/12.desktop-ui/13.content-controls",{"title":1437,"path":1438,"stem":1439},"UI/UX принципи десктопних застосунків","/csharp/desktop-ui/13a.ui-ux-principles","01.csharp/12.desktop-ui/13a.ui-ux-principles",{"title":1441,"path":1442,"stem":1443},"Dependency Properties — Концепція та Value Resolution","/csharp/desktop-ui/dependency-properties-part1","01.csharp/12.desktop-ui/14.dependency-properties-part1",{"title":1445,"path":1446,"stem":1447},"Avalonia Property System — StyledProperty та DirectProperty","/csharp/desktop-ui/14a.avalonia-property-system","01.csharp/12.desktop-ui/14a.avalonia-property-system",{"title":1449,"path":1450,"stem":1451},"Attached Properties — Властивості без меж","/csharp/desktop-ui/attached-properties","01.csharp/12.desktop-ui/15.attached-properties",{"title":1453,"path":1454,"stem":1455},"Routed Events — Маршрутизація подій у WPF","/csharp/desktop-ui/routed-events","01.csharp/12.desktop-ui/16.routed-events",{"title":1457,"path":1458,"stem":1459},"Data Binding — Від Code-Behind до Декларативності","/csharp/desktop-ui/data-binding-basics-part1","01.csharp/12.desktop-ui/17.data-binding-basics-part1",{"title":1461,"path":1462,"stem":1463},"INotifyPropertyChanged — Живе оновлення UI","/csharp/desktop-ui/data-binding-basics-part2","01.csharp/12.desktop-ui/17.data-binding-basics-part2",{"title":1465,"path":1466,"stem":1467},"Compiled Bindings в Avalonia — Безпека на етапі компіляції","/csharp/desktop-ui/17a.avalonia-compiled-bindings","01.csharp/12.desktop-ui/17a.avalonia-compiled-bindings",{"title":1469,"path":1470,"stem":1471},"Просунутий Data Binding — ElementName, RelativeSource, MultiBinding","/csharp/desktop-ui/data-binding-advanced","01.csharp/12.desktop-ui/18.data-binding-advanced",{"title":1473,"path":1474,"stem":1475},"Value Converters — Перетворення типів даних у Data Binding","/csharp/desktop-ui/value-converters","01.csharp/12.desktop-ui/19.value-converters",{"title":1477,"path":1478,"stem":1479},"Data Templates — Візуалізація об'єктів у WPF","/csharp/desktop-ui/data-templates","01.csharp/12.desktop-ui/20.data-templates",{"title":1481,"path":1482,"stem":1483},"Collections Binding Part 1 — ObservableCollection та ItemsControl","/csharp/desktop-ui/collections-binding-part1","01.csharp/12.desktop-ui/21.collections-binding-part1",{"title":1485,"path":1486,"stem":1487},"Collections Binding Part 2 — ICollectionView, Filtering, Sorting та Virtualization","/csharp/desktop-ui/collections-binding-part2","01.csharp/12.desktop-ui/21.collections-binding-part2",{"title":1489,"path":1490,"stem":1491},"MVVM Pattern — Від Spaghetti Code до архітектури","/csharp/desktop-ui/mvvm-pattern","01.csharp/12.desktop-ui/22.mvvm-pattern",{"title":1493,"path":1494,"stem":1495},"ViewModel Implementation — Від BaseViewModel до валідації","/csharp/desktop-ui/viewmodel-implementation","01.csharp/12.desktop-ui/23.viewmodel-implementation",{"title":1497,"path":1498,"stem":1499},"Commands — Від event handlers до декларативних команд","/csharp/desktop-ui/commands","01.csharp/12.desktop-ui/24.commands",{"title":1501,"path":1502,"stem":1503},"MVVM Toolkit — MVVM без boilerplate через Source Generators","/csharp/desktop-ui/mvvm-toolkit","01.csharp/12.desktop-ui/25.mvvm-toolkit",{"title":1505,"path":1506,"stem":1507},"Messenger Pattern — Комунікація між ViewModel без прямих посилань","/csharp/desktop-ui/messenger-pattern","01.csharp/12.desktop-ui/26.messenger-pattern",{"title":1509,"path":1510,"stem":1511},"Стилі WPF — CSS для десктопу","/csharp/desktop-ui/styles-basics","01.csharp/12.desktop-ui/27.styles-basics",{"title":1513,"path":1514,"stem":1515},"CSS-like стилі Avalonia","/csharp/desktop-ui/27a.avalonia-css-styling","01.csharp/12.desktop-ui/27a.avalonia-css-styling",{"title":1517,"path":1518,"stem":1519},"Control Templates — Частина 1. Концепція та TemplateBinding","/csharp/desktop-ui/control-templates-part1","01.csharp/12.desktop-ui/28.control-templates-part1",{"title":1521,"path":1522,"stem":1523},"Control Templates — Частина 2. Named Parts та ContentPresenter","/csharp/desktop-ui/control-templates-part2","01.csharp/12.desktop-ui/28.control-templates-part2",{"title":1525,"path":1526,"stem":1527},"Control Themes в Avalonia — нова ера стилізації","/csharp/desktop-ui/28a.avalonia-control-themes","01.csharp/12.desktop-ui/28a.avalonia-control-themes",{"title":1529,"path":1530,"stem":1531},"Triggers та Visual State Manager у WPF","/csharp/desktop-ui/triggers-visual-states","01.csharp/12.desktop-ui/29.triggers-visual-states",{"title":1533,"path":1534,"stem":1535},"Pseudo-classes в Avalonia — замість WPF Triggers","/csharp/desktop-ui/29a.avalonia-pseudo-classes","01.csharp/12.desktop-ui/29a.avalonia-pseudo-classes",{"title":1537,"path":1538,"stem":1539},"Теми та ресурсні словники у WPF","/csharp/desktop-ui/resources-themes","01.csharp/12.desktop-ui/30.resources-themes",{"title":1541,"path":1542,"stem":1543},"Avalonia Themes — Fluent Design та система тематизації","/csharp/desktop-ui/30a.avalonia-themes-fluent","01.csharp/12.desktop-ui/30a.avalonia-themes-fluent",{"title":1545,"path":1546,"stem":1547},"Контроли колекцій — глибоке занурення","/csharp/desktop-ui/collection-controls","01.csharp/12.desktop-ui/31.collection-controls",{"title":1549,"path":1550,"stem":1551},"DataGrid — колонки та базове відображення","/csharp/desktop-ui/datagrid-part1","01.csharp/12.desktop-ui/32.datagrid-part1",{"title":1553,"path":1554,"stem":1555},"DataGrid — сортування, фільтрація, редагування","/csharp/desktop-ui/datagrid-part2","01.csharp/12.desktop-ui/32.datagrid-part2",{"title":1557,"path":1558,"stem":1559},"TreeView та GridView","/csharp/desktop-ui/treeview-listview","01.csharp/12.desktop-ui/33.treeview-listview",{"title":1561,"path":1562,"stem":1563},"Меню, Toolbar, ContextMenu, StatusBar","/csharp/desktop-ui/menus-toolbars","01.csharp/12.desktop-ui/34.menus-toolbars",{"title":1565,"path":1566,"stem":1567},"Навігація та керування вікнами. Частина 1: вікна та сторінки","/csharp/desktop-ui/navigation-windows-part1","01.csharp/12.desktop-ui/35.navigation-windows-part1",{"title":1569,"path":1570,"stem":1571},"Навігація та керування вікнами. Частина 2: MVVM-навігація","/csharp/desktop-ui/navigation-windows-part2","01.csharp/12.desktop-ui/35.navigation-windows-part2",{"title":1573,"path":1574,"stem":1575},"Avalonia — Навігація та діалоги","/csharp/desktop-ui/35a.avalonia-navigation-dialogs","01.csharp/12.desktop-ui/35a.avalonia-navigation-dialogs",{"title":1577,"path":1578,"stem":1579},"Діалоги та File Pickers у WPF","/csharp/desktop-ui/dialogs-file-pickers","01.csharp/12.desktop-ui/36.dialogs-file-pickers",{"title":1581,"path":1582,"stem":1583},"UserControl: компонентний підхід у WPF","/csharp/desktop-ui/user-controls","01.csharp/12.desktop-ui/37.user-controls",{"title":1585,"path":1586,"stem":1587},"Custom Controls: Lookless Controls у WPF","/csharp/desktop-ui/custom-controls","01.csharp/12.desktop-ui/38.custom-controls",{"title":1589,"path":1590,"stem":1591},"Avalonia TemplatedControl — Lookless Controls","/csharp/desktop-ui/38a.avalonia-templated-controls","01.csharp/12.desktop-ui/38a.avalonia-templated-controls",{"title":1593,"path":1594,"stem":1595},"Анімації у WPF: Storyboard та Easing Functions","/csharp/desktop-ui/animations-transitions","01.csharp/12.desktop-ui/39.animations-transitions",{"title":1597,"path":1598,"stem":1599},"Анімації в Avalonia","/csharp/desktop-ui/39a.avalonia-animations","01.csharp/12.desktop-ui/39a.avalonia-animations",{"title":1601,"path":1602,"stem":1603},"2D Графіка та Мультимедіа у WPF","/csharp/desktop-ui/media-graphics","01.csharp/12.desktop-ui/40.media-graphics",{"title":1605,"path":1606,"stem":1607},"Dependency Injection у WPF та Avalonia","/csharp/desktop-ui/di-integration","01.csharp/12.desktop-ui/41.di-integration",{"title":1609,"path":1610,"stem":1611},"SQLite та EF Core у десктопних додатках","/csharp/desktop-ui/data-persistence-part1","01.csharp/12.desktop-ui/42.data-persistence-part1",{"title":1613,"path":1614,"stem":1615},"Repository Pattern та Unit of Work","/csharp/desktop-ui/data-persistence-part2","01.csharp/12.desktop-ui/43.data-persistence-part2",{"title":1617,"path":1618,"stem":1619},"Тестування ViewModels","/csharp/desktop-ui/viewmodel-testing","01.csharp/12.desktop-ui/44.viewmodel-testing",{"title":1621,"path":1622,"stem":1623},"Avalonia Headless Testing — тестування UI без вікон","/csharp/desktop-ui/44a.avalonia-headless-testing","01.csharp/12.desktop-ui/44a.avalonia-headless-testing",{"title":1625,"path":1626,"stem":1627},"Кросплатформна розробка з Avalonia","/csharp/desktop-ui/avalonia-cross-platform","01.csharp/12.desktop-ui/45.avalonia-cross-platform",{"title":1629,"path":1630,"stem":1631},"Пакування та розгортання Avalonia додатків","/csharp/desktop-ui/avalonia-packaging-deployment","01.csharp/12.desktop-ui/46.avalonia-packaging-deployment",{"title":1633,"path":1634,"stem":1635},"Розгортання WPF застосунків","/csharp/desktop-ui/wpf-packaging-deployment","01.csharp/12.desktop-ui/47.wpf-packaging-deployment",{"title":1637,"path":1638,"stem":1639},"C# & .NET: The Ultimate Roadmap","/csharp/roadmap","01.csharp/roadmap",{"title":1641,"icon":1642,"path":1643,"stem":1644,"children":1645,"page":59},"C++","i-devicon-cplusplus","/cpp","02.cpp",[1646,1650,1654,1658,1662,1666,1670,1674,1678,1681,1685,1689,1693,1697,1701,1705,1709,1713,1717,1721,1725,1729,1733,1737,1741,1745,1749,1753,1757,1761],{"title":1647,"path":1648,"stem":1649},"Вступ у програмування та алгоритми","/cpp/intro-algorithms","02.cpp/01.intro-algorithms",{"title":1651,"path":1652,"stem":1653},"Code Style: угоди про оформлення коду","/cpp/code-style","02.cpp/02.code-style",{"title":1655,"path":1656,"stem":1657},"Середовище розробки та перший проєкт","/cpp/ide-setup","02.cpp/03.ide-setup",{"title":1659,"path":1660,"stem":1661},"Вивід даних на екран","/cpp/data-output","02.cpp/04.data-output",{"title":1663,"path":1664,"stem":1665},"Типи даних, змінні та константи","/cpp/data-types-variables","02.cpp/05.data-types-variables",{"title":1667,"path":1668,"stem":1669},"Ввід даних з клавіатури","/cpp/data-input","02.cpp/06.data-input",{"title":1671,"path":1672,"stem":1673},"Оператори, перетворення типів та логічні операції","/cpp/operators-type-conversion","02.cpp/07.operators-type-conversion",{"title":1675,"path":1676,"stem":1677},"Цикли","/cpp/loops","02.cpp/08.loops",{"title":32,"path":1679,"stem":1680},"/cpp/arrays","02.cpp/09.arrays",{"title":1682,"path":1683,"stem":1684},"Алгоритми сортування та аналіз складності","/cpp/sorting","02.cpp/10.sorting",{"title":1686,"path":1687,"stem":1688},"Алгоритми пошуку","/cpp/searching","02.cpp/11.searching",{"title":1690,"path":1691,"stem":1692},"Функції: основи","/cpp/functions-basics","02.cpp/12.functions-basics",{"title":1694,"path":1695,"stem":1696},"Функції: прототипи, область видимості та додаткові можливості","/cpp/functions-scope","02.cpp/13.functions-scope",{"title":1698,"path":1699,"stem":1700},"Функції: перевантаження та шаблони","/cpp/functions-overloading-templates","02.cpp/14.functions-overloading-templates",{"title":1702,"path":1703,"stem":1704},"Вказівники: основи","/cpp/pointers-basics","02.cpp/15.pointers-basics",{"title":1706,"path":1707,"stem":1708},"Посилання (References)","/cpp/references","02.cpp/16.references",{"title":1710,"path":1711,"stem":1712},"Вказівники, const і масиви","/cpp/pointers-const-arrays","02.cpp/17.pointers-const-arrays",{"title":1714,"path":1715,"stem":1716},"Адресна арифметика","/cpp/pointer-arithmetic","02.cpp/18.pointer-arithmetic",{"title":1718,"path":1719,"stem":1720},"Динамічна пам'ять","/cpp/dynamic-memory","02.cpp/19.dynamic-memory",{"title":1722,"path":1723,"stem":1724},"Вказівники типу void","/cpp/void-pointers","02.cpp/20.void-pointers",{"title":1726,"path":1727,"stem":1728},"Вказівники на вказівники","/cpp/pointers-to-pointers","02.cpp/21.pointers-to-pointers",{"title":1730,"path":1731,"stem":1732},"Оператор доступу до членів через вказівник (->)","/cpp/member-access-operator","02.cpp/22.member-access-operator",{"title":1734,"path":1735,"stem":1736},"Цикл for-each (Range-based for)","/cpp/foreach-loop","02.cpp/23.foreach-loop",{"title":1738,"path":1739,"stem":1740},"Вказівники на функції","/cpp/function-pointers","02.cpp/24.function-pointers",{"title":1742,"path":1743,"stem":1744},"Лямбда-вирази","/cpp/lambdas","02.cpp/25.lambdas",{"title":1746,"path":1747,"stem":1748},"Лямбда-захоплення","/cpp/lambda-captures","02.cpp/26.lambda-captures",{"title":1750,"path":1751,"stem":1752},"Еліпсис","/cpp/ellipsis","02.cpp/27.ellipsis",{"title":1754,"path":1755,"stem":1756},"Аргументи командного рядка","/cpp/command-line-arguments","02.cpp/28.command-line-arguments",{"title":1758,"path":1759,"stem":1760},"Перерахування (enum)","/cpp/enum","02.cpp/29.enum",{"title":1762,"path":1763,"stem":1764},"План навчання: Курс C++ — Продовження (Статті 29–60+)","/cpp/curriculum-plan","02.cpp/curriculum-plan",{"title":1766,"icon":1767,"path":1768,"stem":1769,"children":1770,"page":59},"JavaScript","i-devicon-javascript","/javascript","03.javascript",[1771,1797,1851,1873,2177,2215],{"title":1772,"icon":1773,"path":1774,"stem":1775,"children":1776,"page":59},"Events","i-lucide-mouse-pointer-click","/javascript/events","03.javascript/01.events",[1777,1781,1785,1789,1793],{"title":1778,"path":1779,"stem":1780},"Вступ до подій браузера","/javascript/events/intro","03.javascript/01.events/01.intro",{"title":1782,"path":1783,"stem":1784},"Бульбашковий механізм (Bubbling) та занурення (Capturing)","/javascript/events/bubbling-capturing","03.javascript/01.events/02.bubbling-capturing",{"title":1786,"path":1787,"stem":1788},"Делегування подій (Event Delegation)","/javascript/events/delegate-events","03.javascript/01.events/03.delegate-events",{"title":1790,"path":1791,"stem":1792},"Типові дії браузера та preventDefault()","/javascript/events/prevent-default","03.javascript/01.events/04.prevent-default",{"title":1794,"path":1795,"stem":1796},"Запуск користувацьких подій (Custom Events)","/javascript/events/custom-events","03.javascript/01.events/05.custom-events",{"title":1798,"icon":1799,"path":1800,"stem":1801,"children":1802,"page":59},"Network","i-lucide-globe","/javascript/network","03.javascript/02.network",[1803,1807,1811,1815,1819,1823,1827,1831,1835,1839,1843,1847],{"title":1804,"path":1805,"stem":1806},"Fetch API - Сучасний підхід до HTTP-запитів","/javascript/network/01-fetch-api","03.javascript/02.network/01-fetch-api",{"title":1808,"path":1809,"stem":1810},"FormData - Робота з формами та файлами","/javascript/network/02-formdata","03.javascript/02.network/02-formdata",{"title":1812,"path":1813,"stem":1814},"Відстеження прогресу завантаження","/javascript/network/03-download-progress","03.javascript/02.network/03-download-progress",{"title":1816,"path":1817,"stem":1818},"Переривання fetch-запитів","/javascript/network/04-abort-requests","03.javascript/02.network/04-abort-requests",{"title":1820,"path":1821,"stem":1822},"CORS - Запити між різними джерелами","/javascript/network/05-cors","03.javascript/02.network/05-cors",{"title":1824,"path":1825,"stem":1826},"Fetch API - Повний довідник опцій","/javascript/network/06-fetch-options","03.javascript/02.network/06-fetch-options",{"title":1828,"path":1829,"stem":1830},"URL Objects - Робота з посиланнями","/javascript/network/07-url-objects","03.javascript/02.network/07-url-objects",{"title":1832,"path":1833,"stem":1834},"XMLHttpRequest - AJAX та низькорівневі запити","/javascript/network/08-xmlhttprequest","03.javascript/02.network/08-xmlhttprequest",{"title":1836,"path":1837,"stem":1838},"Відновлюване завантаження файлів","/javascript/network/09-resumable-upload","03.javascript/02.network/09-resumable-upload",{"title":1840,"path":1841,"stem":1842},"Cookies, document.cookie та світ після \"Cookiepocalypse\"","/javascript/network/10-cookies","03.javascript/02.network/10-cookies",{"title":1844,"path":1845,"stem":1846},"js-cookie: Керування Cookies без Болю","/javascript/network/11-js-cookie","03.javascript/02.network/11-js-cookie",{"title":1848,"path":1849,"stem":1850},"Axios: Потужний HTTP-клієнт для JavaScript","/javascript/network/12-axios","03.javascript/02.network/12-axios",{"title":1852,"icon":1853,"path":1854,"stem":1855,"children":1856,"page":59},"Bom","i-lucide-monitor","/javascript/bom","03.javascript/03.bom",[1857,1861,1865,1869],{"title":1858,"path":1859,"stem":1860},"LocalStorage, SessionStorage та patterns збереження даних","/javascript/bom/01-localstorage","03.javascript/03.bom/01-localstorage",{"title":1862,"path":1863,"stem":1864},"Location Object - Керування адресою сторінки","/javascript/bom/02-location-object","03.javascript/03.bom/02-location-object",{"title":1866,"path":1867,"stem":1868},"History API - Керування історією браузера","/javascript/bom/03-history-api","03.javascript/03.bom/03-history-api",{"title":1870,"path":1871,"stem":1872},"Navigator Object - Ідентифікація та Можливості Пристрою","/javascript/bom/04-navigator-object","03.javascript/03.bom/04-navigator-object",{"title":1874,"icon":1875,"path":1876,"stem":1877,"children":1878},"React","i-devicon-react","/javascript/react","03.javascript/04.react/index",[1879,1880,1884,1888,1892,1896,1959,1994,2146],{"title":1874,"path":1876,"stem":1877},{"title":1881,"path":1882,"stem":1883},"Робота з Формами в React","/javascript/react/react-forms","03.javascript/04.react/01.react-forms",{"title":1885,"path":1886,"stem":1887},"React Hook Form: Професійна Робота з Формами","/javascript/react/react-hook-form","03.javascript/04.react/02.react-hook-form",{"title":1889,"path":1890,"stem":1891},"React Hook Form: Глибоке Розуміння Архітектури та Оптимізації","/javascript/react/react-hook-form-new","03.javascript/04.react/02.react-hook-form-new",{"title":1893,"path":1894,"stem":1895},"Axios та React: Професійна Архітектура Запитів","/javascript/react/data-fetching-axios","03.javascript/04.react/03.data-fetching-axios",{"title":1897,"icon":132,"path":1898,"stem":1899,"children":1900},"Tanstack Query","/javascript/react/tanstack-query","03.javascript/04.react/04.tanstack-query/index",[1901,1903,1907,1911,1915,1919,1923,1927,1931,1935,1939,1943,1947,1951,1955],{"title":1902,"path":1898,"stem":1899},"TanStack Query: Майстерність Керування Станом Сервера",{"title":1904,"path":1905,"stem":1906},"Парадигма Server State: Чому useEffect недостатньо","/javascript/react/tanstack-query/server-state-paradigm","03.javascript/04.react/04.tanstack-query/01.server-state-paradigm",{"title":1908,"path":1909,"stem":1910},"Встановлення та Налаштування: Фундамент","/javascript/react/tanstack-query/installation-and-devtools","03.javascript/04.react/04.tanstack-query/02.installation-and-devtools",{"title":1912,"path":1913,"stem":1914},"Основи Запитів та Магія Ключів","/javascript/react/tanstack-query/query-basics-and-keys","03.javascript/04.react/04.tanstack-query/03.query-basics-and-keys",{"title":1916,"path":1917,"stem":1918},"Синхронізація Даних: Життєвий Цикл Запиту","/javascript/react/tanstack-query/data-synchronization","03.javascript/04.react/04.tanstack-query/04.data-synchronization",{"title":1920,"path":1921,"stem":1922},"Мутації та Інвалідація: Зміна Даних","/javascript/react/tanstack-query/mutations-and-invalidation","03.javascript/04.react/04.tanstack-query/05.mutations-and-invalidation",{"title":1924,"path":1925,"stem":1926},"Оптимістичні Оновлення: Швидше за Світло","/javascript/react/tanstack-query/optimistic-updates","03.javascript/04.react/04.tanstack-query/06.optimistic-updates",{"title":1928,"path":1929,"stem":1930},"Пагінація та Infinite Scroll","/javascript/react/tanstack-query/pagination-and-load-more","03.javascript/04.react/04.tanstack-query/07.pagination-and-load-more",{"title":1932,"path":1933,"stem":1934},"Просунуті Патерни та Оптимізація","/javascript/react/tanstack-query/advanced-patterns","03.javascript/04.react/04.tanstack-query/08.advanced-patterns",{"title":1936,"path":1937,"stem":1938},"Архітектура та Best Practices","/javascript/react/tanstack-query/architecture-and-best-practices","03.javascript/04.react/04.tanstack-query/09.architecture-and-best-practices",{"title":1940,"path":1941,"stem":1942},"Server-Side Rendering (SSR) та Гідратація","/javascript/react/tanstack-query/server-side-rendering","03.javascript/04.react/04.tanstack-query/10.server-side-rendering",{"title":1944,"path":1945,"stem":1946},"Стратегії Тестування","/javascript/react/tanstack-query/testing-strategies","03.javascript/04.react/04.tanstack-query/11.testing-strategies",{"title":1948,"path":1949,"stem":1950},"Аутентифікація та Обробка Помилок","/javascript/react/tanstack-query/authentication-and-errors","03.javascript/04.react/04.tanstack-query/12.authentication-and-errors",{"title":1952,"path":1953,"stem":1954},"React Suspense та Майбутнє","/javascript/react/tanstack-query/react-suspense","03.javascript/04.react/04.tanstack-query/13.react-suspense",{"title":1956,"path":1957,"stem":1958},"Глибоке Занурення в Продуктивність","/javascript/react/tanstack-query/performance-deep-dive","03.javascript/04.react/04.tanstack-query/14.performance-deep-dive",{"title":1960,"icon":1875,"path":1961,"stem":1962,"children":1963},"React Router","/javascript/react/react-router","03.javascript/04.react/05.react-router/index",[1964,1966,1970,1974,1978,1982,1986,1990],{"title":1965,"path":1961,"stem":1962},"React Router: Навігаційна система сучасного вебу",{"title":1967,"path":1968,"stem":1969},"Налаштування та Базовий Роутинг","/javascript/react/react-router/setup-and-basic-routing","03.javascript/04.react/05.react-router/01.setup-and-basic-routing",{"title":1971,"path":1972,"stem":1973},"Динамічна Навігація","/javascript/react/react-router/navigation-and-links","03.javascript/04.react/05.react-router/02.navigation-and-links",{"title":1975,"path":1976,"stem":1977},"Вкладені Маршрути та Макети","/javascript/react/react-router/nested-routes-and-layouts","03.javascript/04.react/05.react-router/03.nested-routes-and-layouts",{"title":1979,"path":1980,"stem":1981},"Динамічні Маршрути та Параметри","/javascript/react/react-router/dynamic-routing","03.javascript/04.react/05.react-router/04.dynamic-routing",{"title":1983,"path":1984,"stem":1985},"Data APIs: Loaders та Actions","/javascript/react/react-router/data-loading","03.javascript/04.react/05.react-router/05.data-loading",{"title":1987,"path":1988,"stem":1989},"Просунуті Патерни","/javascript/react/react-router/advanced-patterns","03.javascript/04.react/05.react-router/06.advanced-patterns",{"title":1991,"path":1992,"stem":1993},"Legacy Routing: Компонентний підхід","/javascript/react/react-router/legacy-routing","03.javascript/04.react/05.react-router/07.legacy-routing",{"title":1995,"icon":132,"path":1996,"stem":1997,"children":1998},"Redux","/javascript/react/redux","03.javascript/04.react/06.redux/index",[1999,2001,2017,2046,2055,2076,2092,2121],{"title":2000,"path":1996,"stem":1997},"Redux: Еволюція управління станом",{"title":14,"icon":15,"path":2002,"stem":2003,"children":2004,"page":59},"/javascript/react/redux/fundamentals","03.javascript/04.react/06.redux/01.fundamentals",[2005,2009,2013],{"title":2006,"path":2007,"stem":2008},"Вступ до State Management","/javascript/react/redux/fundamentals/intro-state-management","03.javascript/04.react/06.redux/01.fundamentals/01.intro-state-management",{"title":2010,"path":2011,"stem":2012},"Філософія Redux та Три Принципи","/javascript/react/redux/fundamentals/redux-philosophy","03.javascript/04.react/06.redux/01.fundamentals/02.redux-philosophy",{"title":2014,"path":2015,"stem":2016},"Чисті функції та Іммутабельність","/javascript/react/redux/fundamentals/pure-functions-immutability","03.javascript/04.react/06.redux/01.fundamentals/03.pure-functions-immutability",{"title":2018,"icon":132,"path":2019,"stem":2020,"children":2021,"page":59},"Classic Redux","/javascript/react/redux/classic-redux","03.javascript/04.react/06.redux/02.classic-redux",[2022,2026,2030,2034,2038,2042],{"title":2023,"path":2024,"stem":2025},"Створення Store (Classic Redux)","/javascript/react/redux/classic-redux/store-setup","03.javascript/04.react/06.redux/02.classic-redux/01.store-setup",{"title":2027,"path":2028,"stem":2029},"Actions, Constants та Action Creators","/javascript/react/redux/classic-redux/actions-constants","03.javascript/04.react/06.redux/02.classic-redux/02.actions-constants",{"title":2031,"path":2032,"stem":2033},"Логіка Reducers","/javascript/react/redux/classic-redux/reducers","03.javascript/04.react/06.redux/02.classic-redux/03.reducers",{"title":2035,"path":2036,"stem":2037},"Комбінування Reducers (Root Reducer)","/javascript/react/redux/classic-redux/data-flow","03.javascript/04.react/06.redux/02.classic-redux/04.data-flow",{"title":2039,"path":2040,"stem":2041},"Підключення до React (React-Redux)","/javascript/react/redux/classic-redux/react-redux-connection","03.javascript/04.react/06.redux/02.classic-redux/05.react-redux-connection",{"title":2043,"path":2044,"stem":2045},"Middleware та Асинхронність (Redux Thunk)","/javascript/react/redux/classic-redux/middleware-thunk","03.javascript/04.react/06.redux/02.classic-redux/06.middleware-thunk",{"title":2047,"icon":132,"path":2048,"stem":2049,"children":2050,"page":59},"Transition To Rtk","/javascript/react/redux/transition-to-rtk","03.javascript/04.react/06.redux/03.transition-to-rtk",[2051],{"title":2052,"path":2053,"stem":2054},"Проблеми класичного Redux","/javascript/react/redux/transition-to-rtk/problems-with-classic","03.javascript/04.react/06.redux/03.transition-to-rtk/01.problems-with-classic",{"title":2056,"icon":132,"path":2057,"stem":2058,"children":2059,"page":59},"Redux Toolkit","/javascript/react/redux/redux-toolkit","03.javascript/04.react/06.redux/04.redux-toolkit",[2060,2064,2068,2072],{"title":2061,"path":2062,"stem":2063},"Налаштування Store з configureStore","/javascript/react/redux/redux-toolkit/configure-store","03.javascript/04.react/06.redux/04.redux-toolkit/01.configure-store",{"title":2065,"path":2066,"stem":2067},"createSlice: Революція в Redux","/javascript/react/redux/redux-toolkit/create-slice","03.javascript/04.react/06.redux/04.redux-toolkit/02.create-slice",{"title":2069,"path":2070,"stem":2071},"Асинхронність з createAsyncThunk","/javascript/react/redux/redux-toolkit/async-thunks","03.javascript/04.react/06.redux/04.redux-toolkit/03.async-thunks",{"title":2073,"path":2074,"stem":2075},"04. Entity Adapter: Керування нормалізованим станом","/javascript/react/redux/redux-toolkit/entity-adapter","03.javascript/04.react/06.redux/04.redux-toolkit/04.entity-adapter",{"title":2077,"icon":92,"path":2078,"stem":2079,"children":2080,"page":59},"Advanced","/javascript/react/redux/advanced","03.javascript/04.react/06.redux/05.advanced",[2081,2085,2089],{"title":2082,"path":2083,"stem":2084},"Мемоізація та Селектори: Повний Гайд по Reselect","/javascript/react/redux/advanced/selectors-reselect","03.javascript/04.react/06.redux/05.advanced/01.selectors-reselect",{"title":2086,"path":2087,"stem":2088},"RTK Query: Архітектура Серверного Кешу","/javascript/react/redux/advanced/rtk-query-intro","03.javascript/04.react/06.redux/05.advanced/02.rtk-query-intro",{"title":1936,"path":2090,"stem":2091},"/javascript/react/redux/advanced/architecture-best-practices","03.javascript/04.react/06.redux/05.advanced/03.architecture-best-practices",{"title":2093,"icon":132,"path":2094,"stem":2095,"children":2096,"page":59},"Project Kanban","/javascript/react/redux/project-kanban","03.javascript/04.react/06.redux/06.project-kanban",[2097,2101,2105,2109,2113,2117],{"title":2098,"path":2099,"stem":2100},"Проєкт: Kanban Board (Trello Clone)","/javascript/react/redux/project-kanban/project-overview","03.javascript/04.react/06.redux/06.project-kanban/01.project-overview",{"title":2102,"path":2103,"stem":2104},"Налаштування та Типізація","/javascript/react/redux/project-kanban/setup-and-types","03.javascript/04.react/06.redux/06.project-kanban/02.setup-and-types",{"title":2106,"path":2107,"stem":2108},"Board Slice: Серце Дошки","/javascript/react/redux/project-kanban/board-slice","03.javascript/04.react/06.redux/06.project-kanban/03.board-slice",{"title":2110,"path":2111,"stem":2112},"Логіка Drag & Drop","/javascript/react/redux/project-kanban/drag-and-drop-logic","03.javascript/04.react/06.redux/06.project-kanban/04.drag-and-drop-logic",{"title":2114,"path":2115,"stem":2116},"Інтеграція з RTK Query","/javascript/react/redux/project-kanban/rtk-query-integration","03.javascript/04.react/06.redux/06.project-kanban/05.rtk-query-integration",{"title":2118,"path":2119,"stem":2120},"Optimistic Updates","/javascript/react/redux/project-kanban/optimistic-updates","03.javascript/04.react/06.redux/06.project-kanban/06.optimistic-updates",{"title":2122,"icon":132,"path":2123,"stem":2124,"children":2125,"page":59},"Testing","/javascript/react/redux/testing","03.javascript/04.react/06.redux/07.testing",[2126,2130,2134,2138,2142],{"title":2127,"path":2128,"stem":2129},"Тестування Redux","/javascript/react/redux/testing/intro-testing","03.javascript/04.react/06.redux/07.testing/01.intro-testing",{"title":2131,"path":2132,"stem":2133},"Тестування Reducers","/javascript/react/redux/testing/testing-reducers","03.javascript/04.react/06.redux/07.testing/02.testing-reducers",{"title":2135,"path":2136,"stem":2137},"Тестування Селекторів","/javascript/react/redux/testing/testing-selectors","03.javascript/04.react/06.redux/07.testing/03.testing-selectors",{"title":2139,"path":2140,"stem":2141},"Тестування Компонентів (Integration)","/javascript/react/redux/testing/testing-components","03.javascript/04.react/06.redux/07.testing/04.testing-components",{"title":2143,"path":2144,"stem":2145},"Тестування Async Thunks","/javascript/react/redux/testing/testing-thunks","03.javascript/04.react/06.redux/07.testing/05.testing-thunks",{"title":2147,"icon":132,"path":2148,"stem":2149,"children":2150},"Ui Libraries","/javascript/react/ui-libraries","03.javascript/04.react/07.ui-libraries/index",[2151,2153,2157,2161,2165,2169,2173],{"title":2152,"path":2148,"stem":2149},"UI Бібліотеки в React",{"title":2154,"path":2155,"stem":2156},"Вступ до UI Бібліотек: Навіщо Винаходити Велосипед Двічі?","/javascript/react/ui-libraries/introduction-to-ui-libraries","03.javascript/04.react/07.ui-libraries/01.introduction-to-ui-libraries",{"title":2158,"path":2159,"stem":2160},"Філософія shadcn/ui: \"Not a Component Library\"","/javascript/react/ui-libraries/shadcn-philosophy","03.javascript/04.react/07.ui-libraries/02.shadcn-philosophy",{"title":2162,"path":2163,"stem":2164},"Установка та Налаштування shadcn/ui","/javascript/react/ui-libraries/shadcn-installation","03.javascript/04.react/07.ui-libraries/03.shadcn-installation",{"title":2166,"path":2167,"stem":2168},"Базові Компоненти shadcn/ui: Фундамент Інтерфейсу","/javascript/react/ui-libraries/shadcn-components-basics","03.javascript/04.react/07.ui-libraries/04.shadcn-components-basics",{"title":2170,"path":2171,"stem":2172},"Компоненти Форм: Побудова Інтерактивних Form","/javascript/react/ui-libraries/shadcn-components-forms","03.javascript/04.react/07.ui-libraries/05.shadcn-components-forms",{"title":2174,"path":2175,"stem":2176},"Складні Компоненти: Dialog, Dropdown, Table та Command","/javascript/react/ui-libraries/shadcn-components-advanced","03.javascript/04.react/07.ui-libraries/06.shadcn-components-advanced",{"title":2178,"icon":2179,"path":2180,"stem":2181,"children":2182,"page":59},"TypeScript","i-devicon-typescript","/javascript/typescript","03.javascript/05.typescript",[2183,2187,2191,2195,2199,2203,2207,2211],{"title":2184,"path":2185,"stem":2186},"TypeScript: Броня для вашого коду","/javascript/typescript/intro-and-basic-types","03.javascript/05.typescript/01.intro-and-basic-types",{"title":2188,"path":2189,"stem":2190},"Майстерність Моделювання Даних: Інтерфейси та Просунуті Типи","/javascript/typescript/interfaces-and-advanced-types","03.javascript/05.typescript/02.interfaces-and-advanced-types",{"title":2192,"path":2193,"stem":2194},"Алхімія Типів: Generics та Utility Types","/javascript/typescript/generics-and-utilities","03.javascript/05.typescript/03.generics-and-utilities",{"title":2196,"path":2197,"stem":2198},"Архітектура та Шаблони: Класи в TypeScript","/javascript/typescript/classes-and-oop","03.javascript/05.typescript/04.classes-and-oop",{"title":2200,"path":2201,"stem":2202},"Продакшн та Екосистема: Advanced Config & Workflow","/javascript/typescript/advanced-patterns-and-config","03.javascript/05.typescript/05.advanced-patterns-and-config",{"title":2204,"path":2205,"stem":2206},"TypeScript у світі React","/javascript/typescript/react-basics","03.javascript/05.typescript/06.react-basics",{"title":2208,"path":2209,"stem":2210},"React + TypeScript: Продвинуті патерни","/javascript/typescript/react-advanced","03.javascript/05.typescript/07.react-advanced",{"title":2212,"path":2213,"stem":2214},"React + TypeScript: Екосистема та бібліотеки","/javascript/typescript/react-ecosystem","03.javascript/05.typescript/08.react-ecosystem",{"title":2216,"path":2217,"stem":2218},"Atomic Design","/javascript/atomic-design","03.javascript/2.atomic-design",{"title":2220,"icon":2221,"path":2222,"stem":2223,"children":2224,"page":59},"Java","i-devicon-java","/java","04.java",[2225,2228,2231,2235,2239,2243,2247],{"title":162,"path":2226,"stem":2227},"/java/data-mapper-part1","04.java/01.data-mapper-part1",{"title":166,"path":2229,"stem":2230},"/java/data-mapper-part2","04.java/02.data-mapper-part2",{"title":2232,"path":2233,"stem":2234},"Service Layer: Організація бізнес-логіки","/java/service-layer","04.java/03.service-layer",{"title":2236,"path":2237,"stem":2238},"Rich Domain Model та State Pattern","/java/rich-domain-model","04.java/04.rich-domain-model",{"title":2240,"path":2241,"stem":2242},"Патерни для складної бізнес-логіки","/java/business-logic-patterns","04.java/05.business-logic-patterns",{"title":2244,"path":2245,"stem":2246},"Обробка помилок та валідація","/java/error-handling-validation","04.java/06.error-handling-validation",{"title":2248,"path":2249,"stem":2250,"children":2251,"page":59},"Проектування баз даних","/java/pr2","04.java/pr2",[2252,2256,2260,2264,2268,2272,2276,2280,2284,2288,2292,2296,2300,2304,2308,2312,2316,2320,2324,2328,2332,2336,2340,2344,2348],{"title":2253,"path":2254,"stem":2255},"Концептуальне моделювання: Мистецтво розуміння предметної області","/java/pr2/conceptual-modeling","04.java/pr2/01.conceptual-modeling",{"title":2257,"path":2258,"stem":2259},"Логічне моделювання: Від бізнес-ідей до структур даних","/java/pr2/logical-modeling","04.java/pr2/02.logical-modeling",{"title":2261,"path":2262,"stem":2263},"Нормалізація: Гігієна даних та боротьба з аномаліями","/java/pr2/normalization","04.java/pr2/03.normalization",{"title":2265,"path":2266,"stem":2267},"Фізична схема: Від абстракції до DDL","/java/pr2/physical-schema","04.java/pr2/04.physical-schema",{"title":2269,"path":2270,"stem":2271},"Архітектурна класифікація таблиць","/java/pr2/table-classification","04.java/pr2/05.table-classification",{"title":2273,"path":2274,"stem":2275},"Database Migrations: Версіонування схеми з Flyway","/java/pr2/database-migrations","04.java/pr2/06.database-migrations",{"title":2277,"path":2278,"stem":2279},"А що, якби це була не реляційна БД?","/java/pr2/beyond-relational","04.java/pr2/07.beyond-relational",{"title":2281,"path":2282,"stem":2283},"Object-Relational Impedance Mismatch: Два світи, що не хочуть дружити","/java/pr2/impedance-mismatch","04.java/pr2/09.impedance-mismatch",{"title":2285,"path":2286,"stem":2287},"JDBC: Перший контакт із базою даних","/java/pr2/jdbc-fundamentals","04.java/pr2/10.jdbc-fundamentals",{"title":2289,"path":2290,"stem":2291},"Якість коду: Spotless, SpotBugs та SonarQube","/java/pr2/10a.code-quality","04.java/pr2/10a.code-quality",{"title":2293,"path":2294,"stem":2295},"Connection Pool: Патерн Object Pool для JDBC-з'єднань","/java/pr2/connection-pool","04.java/pr2/11.connection-pool",{"title":2297,"path":2298,"stem":2299},"Row Data Gateway: Об'єкт як обгортка рядка таблиці","/java/pr2/row-data-gateway","04.java/pr2/12.row-data-gateway",{"title":2301,"path":2302,"stem":2303},"Table Data Gateway: Фасад таблиці як архітектурний відступ","/java/pr2/table-data-gateway","04.java/pr2/13.table-data-gateway",{"title":2305,"path":2306,"stem":2307},"Repository + Data Mapper: Правильна шарова архітектура з JDBC","/java/pr2/repository-data-mapper","04.java/pr2/14.repository-data-mapper",{"title":2309,"path":2310,"stem":2311},"Identity Map: Кешування сутностей у рамках сесії","/java/pr2/identity-map","04.java/pr2/15.identity-map",{"title":2313,"path":2314,"stem":2315},"Unit of Work: Відстеження змін і координація JDBC-транзакцій","/java/pr2/unit-of-work","04.java/pr2/16.unit-of-work",{"title":2317,"path":2318,"stem":2319},"Strategy: Замінювані SQL-стратегії для підтримки різних СУБД","/java/pr2/strategy-sql","04.java/pr2/17.strategy-sql",{"title":2321,"path":2322,"stem":2323},"Proxy: Lazy Loading для One-To-Many колекцій","/java/pr2/proxy-lazy-loading","04.java/pr2/18.proxy-lazy-loading",{"title":2325,"path":2326,"stem":2327},"Generic Repository через Java Reflection: анотації та динамічний SQL","/java/pr2/generic-repository-reflection","04.java/pr2/19.generic-repository-reflection",{"title":2329,"path":2330,"stem":2331},"Specification Pattern: Композиція бізнес-правил для складних запитів","/java/pr2/specification-pattern","04.java/pr2/20.specification-pattern",{"title":2333,"path":2334,"stem":2335},"Розширені можливості Specification Pattern: підзапити, агрегації та гібридний підхід","/java/pr2/20a.advanced-specifications","04.java/pr2/20a.advanced-specifications",{"title":2337,"path":2338,"stem":2339},"Асинхронність у JDBC: Від блокуючих викликів до CompletableFuture","/java/pr2/asynchronous-jdbc","04.java/pr2/21.asynchronous-jdbc",{"title":2341,"path":2342,"stem":2343},"Інтеграційне тестування JDBC-репозиторіїв: Embedded H2 та патерн AAA","/java/pr2/integration-testing-h2","04.java/pr2/22.integration-testing-h2",{"title":2345,"path":2346,"stem":2347},"Testcontainers: Тестування з реальною PostgreSQL у Docker-контейнерах","/java/pr2/integration-testing-testcontainers","04.java/pr2/23.integration-testing-testcontainers",{"title":2349,"path":2350,"stem":2351},"Модуль \"Проектування реляційних баз даних\" для 04.java/pr2","/java/pr2/implementation_plan","04.java/pr2/implementation_plan",{"title":2353,"icon":2354,"path":2355,"stem":2356,"children":2357,"page":59},"Бази даних","i-lucide-database","/databases","06.databases",[2358,2388,2411,2448,2477,2495,2529,2541,2550],{"title":2359,"icon":2360,"path":2361,"stem":2362,"children":2363,"page":59},"Intro","i-lucide-play","/databases/intro","06.databases/01.intro",[2364,2368,2372,2376,2380,2384],{"title":2365,"path":2366,"stem":2367},"Введення в теорію баз даних","/databases/intro/introduction-to-databases","06.databases/01.intro/01.introduction-to-databases",{"title":2369,"path":2370,"stem":2371},"Реляційна модель даних","/databases/intro/relational-model-theory","06.databases/01.intro/02.relational-model-theory",{"title":2373,"path":2374,"stem":2375},"ER-моделювання","/databases/intro/er-modeling","06.databases/01.intro/03.er-modeling",{"title":2377,"path":2378,"stem":2379},"Логічне проектування БД","/databases/intro/logical-schema","06.databases/01.intro/04.logical-schema",{"title":2381,"path":2382,"stem":2383},"Класифікація таблиць","/databases/intro/table-classification","06.databases/01.intro/05.table-classification",{"title":2385,"path":2386,"stem":2387},"PlantUML для баз даних","/databases/intro/plantuml-diagrams","06.databases/01.intro/06.plantuml-diagrams",{"title":2389,"icon":2354,"path":2390,"stem":2391,"children":2392,"page":59},"MS SQL Server Start","/databases/ms-sql-server-start","06.databases/02.ms-sql-server-start",[2393,2397,2403,2407],{"title":2394,"path":2395,"stem":2396},"Типи даних у MS SQL Server","/databases/ms-sql-server-start/data-types","06.databases/02.ms-sql-server-start/01.data-types",{"title":2398,"path":2399,"stem":2400,"children":2401},"Індекси у MS SQL Server","/databases/ms-sql-server-start/sql-indexes","06.databases/02.ms-sql-server-start/02.sql-indexes",[2402],{"title":2398,"path":2399,"stem":2400},{"title":2404,"path":2405,"stem":2406},"Системні бази даних MS SQL Server","/databases/ms-sql-server-start/system-databases","06.databases/02.ms-sql-server-start/03.system-databases",{"title":2408,"path":2409,"stem":2410},"Огляд мови SQL та запитів","/databases/ms-sql-server-start/sql-queries-overview","06.databases/02.ms-sql-server-start/04.sql-queries-overview",{"title":2412,"icon":2354,"path":2413,"stem":2414,"children":2415,"page":59},"SQL","/databases/sql","06.databases/03.sql",[2416,2420,2424,2428,2432,2436,2440,2444],{"title":2417,"path":2418,"stem":2419},"Налаштування демонстраційної бази даних","/databases/sql/sample-database-setup","06.databases/03.sql/00.sample-database-setup",{"title":2421,"path":2422,"stem":2423},"DDL - Створення таблиць (CREATE TABLE)","/databases/sql/ddl-create-table","06.databases/03.sql/01.ddl-create-table",{"title":2425,"path":2426,"stem":2427},"DDL - Зміна та видалення таблиць (ALTER, DROP)","/databases/sql/ddl-alter-drop-table","06.databases/03.sql/02.ddl-alter-drop-table",{"title":2429,"path":2430,"stem":2431},"SELECT запити - Основи","/databases/sql/select-queries-fundamentals","06.databases/03.sql/03.select-queries-fundamentals",{"title":2433,"path":2434,"stem":2435},"SELECT запити - Розширені можливості","/databases/sql/select-queries-advanced","06.databases/03.sql/04.select-queries-advanced",{"title":2437,"path":2438,"stem":2439},"INSERT запити - Додавання даних","/databases/sql/insert-queries","06.databases/03.sql/05.insert-queries",{"title":2441,"path":2442,"stem":2443},"UPDATE та DELETE запити","/databases/sql/update-delete-queries","06.databases/03.sql/06.update-delete-queries",{"title":2445,"path":2446,"stem":2447},"Транзакції в SQL","/databases/sql/transactions","06.databases/03.sql/07.transactions",{"title":2449,"icon":2354,"path":2450,"stem":2451,"children":2452,"page":59},"Multi Table Databases","/databases/multi-table-databases","06.databases/04.multi-table-databases",[2453,2457,2461,2465,2469,2473],{"title":2454,"path":2455,"stem":2456},"Зв'язки та нормалізація БД","/databases/multi-table-databases/relationships-and-normalization","06.databases/04.multi-table-databases/00.relationships-and-normalization",{"title":2458,"path":2459,"stem":2460},"INNER JOIN - З'єднання таблиць","/databases/multi-table-databases/inner-join","06.databases/04.multi-table-databases/01.inner-join",{"title":2462,"path":2463,"stem":2464},"OUTER JOINs - LEFT, RIGHT, FULL","/databases/multi-table-databases/outer-joins","06.databases/04.multi-table-databases/02.outer-joins",{"title":2466,"path":2467,"stem":2468},"CROSS та SELF JOINs","/databases/multi-table-databases/cross-self-joins","06.databases/04.multi-table-databases/03.cross-self-joins",{"title":2470,"path":2471,"stem":2472},"Підзапити (Subqueries)","/databases/multi-table-databases/subqueries","06.databases/04.multi-table-databases/04.subqueries",{"title":2474,"path":2475,"stem":2476},"Агрегації з JOIN","/databases/multi-table-databases/aggregations-with-joins","06.databases/04.multi-table-databases/05.aggregations-with-joins",{"title":2478,"icon":2479,"path":2480,"stem":2481,"children":2482,"page":59},"Aggregate Functions","i-lucide-calculator","/databases/aggregate-functions","06.databases/05.aggregate-functions",[2483,2487,2491],{"title":2484,"path":2485,"stem":2486},"Функції агрегування в MS SQL Server","/databases/aggregate-functions/introduction-aggregate-functions","06.databases/05.aggregate-functions/01.introduction-aggregate-functions",{"title":2488,"path":2489,"stem":2490},"Групування даних в MS SQL Server","/databases/aggregate-functions/grouping-data","06.databases/05.aggregate-functions/02.grouping-data",{"title":2492,"path":2493,"stem":2494},"Підзапити з агрегатними функціями","/databases/aggregate-functions/subqueries-aggregates","06.databases/05.aggregate-functions/03.subqueries-aggregates",{"title":2496,"icon":2497,"path":2498,"stem":2499,"children":2500,"page":59},"Тригери та зберігаємі процедури","i-lucide-database-zap","/databases/triggers-stored-procedures","06.databases/07.triggers-stored-procedures",[2501,2505,2509,2513,2517,2521,2525],{"title":2502,"path":2503,"stem":2504},"DML-тригери","/databases/triggers-stored-procedures/dml-triggers","06.databases/07.triggers-stored-procedures/01.dml-triggers",{"title":2506,"path":2507,"stem":2508},"DDL-тригери","/databases/triggers-stored-procedures/ddl-triggers","06.databases/07.triggers-stored-procedures/02.ddl-triggers",{"title":2510,"path":2511,"stem":2512},"Transact-SQL розширення","/databases/triggers-stored-procedures/transact-sql-extensions","06.databases/07.triggers-stored-procedures/03.transact-sql-extensions",{"title":2514,"path":2515,"stem":2516},"Транзакції","/databases/triggers-stored-procedures/transactions","06.databases/07.triggers-stored-procedures/04.transactions",{"title":2518,"path":2519,"stem":2520},"Зберігаємі процедури","/databases/triggers-stored-procedures/stored-procedures","06.databases/07.triggers-stored-procedures/05.stored-procedures",{"title":2522,"path":2523,"stem":2524},"Користувацькі функції","/databases/triggers-stored-procedures/user-defined-functions","06.databases/07.triggers-stored-procedures/06.user-defined-functions",{"title":2526,"path":2527,"stem":2528},"Безпека баз даних","/databases/triggers-stored-procedures/security","06.databases/07.triggers-stored-procedures/08.security",{"title":2526,"icon":793,"path":2530,"stem":2531,"children":2532,"page":59},"/databases/security","06.databases/08.security",[2533,2537],{"title":2534,"path":2535,"stem":2536},"Вступ до безпеки баз даних","/databases/security/introduction","06.databases/08.security/01.introduction",{"title":2538,"path":2539,"stem":2540},"Системні представлення та метадані","/databases/security/system-views","06.databases/08.security/02.system-views",{"title":2542,"icon":2543,"path":2544,"stem":2545,"children":2546,"page":59},"Резервне копіювання та відновлення","i-lucide-database-backup","/databases/backup-recovery","06.databases/09.backup-recovery",[2547],{"title":2542,"path":2548,"stem":2549},"/databases/backup-recovery/backup-restore","06.databases/09.backup-recovery/01.backup-restore",{"title":2551,"icon":2552,"path":2553,"stem":2554,"children":2555,"page":59},"Повнотекстовий пошук","i-lucide-search","/databases/full-text-search","06.databases/10.full-text-search",[2556],{"title":2551,"path":2557,"stem":2558},"/databases/full-text-search/full-text-search","06.databases/10.full-text-search/01.full-text-search",{"title":2560,"icon":2561,"path":2562,"stem":2563,"children":2564,"page":59},"Tools","i-lucide-wrench","/tools","07.tools",[2565],{"title":2566,"icon":2567,"path":2568,"stem":2569,"children":2570},"Docker","i-simple-icons-docker","/tools/docker","07.tools/01.docker/index",[2571,2573,2577,2581,2585,2589,2593,2597,2601,2605,2609,2613,2617,2621,2625,2629,2633,2637],{"title":2572,"path":2568,"stem":2569},"Docker: від нуля до production",{"title":2574,"path":2575,"stem":2576},"Контейнеризація — від проблеми до рішення","/tools/docker/containerization-concept","07.tools/01.docker/01.containerization-concept",{"title":2578,"path":2579,"stem":2580},"Docker — що це і навіщо?","/tools/docker/docker-what-and-why","07.tools/01.docker/02.docker-what-and-why",{"title":2582,"path":2583,"stem":2584},"Архітектура Docker Engine","/tools/docker/docker-architecture","07.tools/01.docker/03.docker-architecture",{"title":2586,"path":2587,"stem":2588},"Встановлення Docker","/tools/docker/installation","07.tools/01.docker/04.installation",{"title":2590,"path":2591,"stem":2592},"Перший контейнер — docker run","/tools/docker/first-container","07.tools/01.docker/05.first-container",{"title":2594,"path":2595,"stem":2596},"Життєвий цикл контейнера","/tools/docker/container-lifecycle","07.tools/01.docker/06.container-lifecycle",{"title":2598,"path":2599,"stem":2600},"Docker Images — фундаментальні концепції","/tools/docker/docker-images-fundamentals","07.tools/01.docker/07.docker-images-fundamentals",{"title":2602,"path":2603,"stem":2604},"Dockerfile — основи","/tools/docker/dockerfile-basics","07.tools/01.docker/08.dockerfile-basics",{"title":2606,"path":2607,"stem":2608},"Dockerfile — просунуті техніки","/tools/docker/dockerfile-advanced","07.tools/01.docker/09.dockerfile-advanced",{"title":2610,"path":2611,"stem":2612},"Build Context та кешування шарів","/tools/docker/build-context-and-cache","07.tools/01.docker/10.build-context-and-cache",{"title":2614,"path":2615,"stem":2616},"Реєстри Docker-образів","/tools/docker/image-registries","07.tools/01.docker/11.image-registries",{"title":2618,"path":2619,"stem":2620},"Контейнеризація .NET додатків","/tools/docker/dotnet-containerization","07.tools/01.docker/12.dotnet-containerization",{"title":2622,"path":2623,"stem":2624},"Томи та збереження даних","/tools/docker/volumes-and-data","07.tools/01.docker/13.volumes-and-data",{"title":2626,"path":2627,"stem":2628},"Основи мережі в Docker","/tools/docker/networking-basics","07.tools/01.docker/14.networking-basics",{"title":2630,"path":2631,"stem":2632},"Змінні оточення та конфігурація","/tools/docker/environment-and-configuration","07.tools/01.docker/15.environment-and-configuration",{"title":2634,"path":2635,"stem":2636},"Docker Compose — оркестрація контейнерів","/tools/docker/docker-compose-basics","07.tools/01.docker/16.docker-compose-basics",{"title":2638,"path":2639,"stem":2640},"Docker Compose — Multi-Service застосунки","/tools/docker/compose-multi-service","07.tools/01.docker/17.compose-multi-service",{"title":2642,"icon":2643,"path":2644,"stem":2645,"children":2646,"page":59},"Software Engineering","i-lucide-code-2","/software-engineering","09.software-engineering",[2647,2651,2655,2659,2663,2667,2671,2675,2679,2683,2687],{"title":2648,"path":2649,"stem":2650},"1. Аналіз предметної області. Експертні знання та складність","/software-engineering/intro.subdomains","09.software-engineering/01.intro.subdomains",{"title":2652,"path":2653,"stem":2654},"2. Обмежені контексти. Інтеграція обмежених контекстів","/software-engineering/integrating-limited-contexts","09.software-engineering/02.integrating-limited-contexts",{"title":2656,"path":2657,"stem":2658},"3. Реалізація простої бізнес-логіки","/software-engineering/simple","09.software-engineering/03.simple",{"title":2660,"path":2661,"stem":2662},"4. Опрацювання складної бізнес-логіки","/software-engineering/complex-business-logic","09.software-engineering/04.complex-business-logic",{"title":2664,"path":2665,"stem":2666},"5. Моделювання фактора часу. Подієво-орієнтована архітектура.","/software-engineering/modelling-the-time-factor","09.software-engineering/05.modelling-the-time-factor",{"title":2668,"path":2669,"stem":2670},"6. Архітектурні патерни","/software-engineering/architectural-patterns","09.software-engineering/06.architectural-patterns",{"title":2672,"path":2673,"stem":2674},"Паттерни взаємодії","/software-engineering/patterns-of-interaction","09.software-engineering/07.patterns-of-interaction",{"title":2676,"path":2677,"stem":2678},"Евристика проєктування","/software-engineering/design-heuristics","09.software-engineering/08.design-heuristics",{"title":2680,"path":2681,"stem":2682},"Еволюція проєктних рішень","/software-engineering/evolution-of-design-solutions","09.software-engineering/09.evolution-of-design-solutions",{"title":2684,"path":2685,"stem":2686},"EventStorming","/software-engineering/eventstorming","09.software-engineering/10.eventstorming",{"title":2688,"path":2689,"stem":2690},"DDD на практиці","/software-engineering/ddd-in-practice","09.software-engineering/11.ddd-in-practice",{"title":2692,"icon":943,"path":2693,"stem":2694,"children":2695,"page":59},"DDD","/ddd","10.ddd",[2696,2700,2704,2708,2712,2716,2720,2724,2728,2732,2736,2740,2744],{"title":2697,"path":2698,"stem":2699},"Аналіз предметної області","/ddd/domain-analysis","10.ddd/01.domain-analysis",{"title":2701,"path":2702,"stem":2703},"Експертні знання про предметну область","/ddd/domain-expert-knowledge","10.ddd/02.domain-expert-knowledge",{"title":2705,"path":2706,"stem":2707},"Як осмислити складність предметної області","/ddd/managing-domain-complexity","10.ddd/03.managing-domain-complexity",{"title":2709,"path":2710,"stem":2711},"Інтеграція обмежених контекстів","/ddd/bounded-context-integration","10.ddd/04.bounded-context-integration",{"title":2713,"path":2714,"stem":2715},"Реалізація простої бізнес-логіки","/ddd/simple-business-logic","10.ddd/05.simple-business-logic",{"title":2717,"path":2718,"stem":2719},"Обробка складної бізнес-логіки","/ddd/complex-business-logic","10.ddd/06.complex-business-logic",{"title":2721,"path":2722,"stem":2723},"Моделювання фактора часу","/ddd/time-modeling","10.ddd/07.time-modeling",{"title":2725,"path":2726,"stem":2727},"Глава 8. Архітектурні Патерни","/ddd/architectural-patterns","10.ddd/08.architectural-patterns",{"title":2729,"path":2730,"stem":2731},"Глава 9. Патерни Взаємодії","/ddd/interaction-patterns","10.ddd/09.interaction-patterns",{"title":2733,"path":2734,"stem":2735},"Глава 10. Проектні Евристики","/ddd/design-heuristics","10.ddd/10.design-heuristics",{"title":2737,"path":2738,"stem":2739},"Глава 11. Еволюція Проектних Рішень","/ddd/evolution-of-design-decisions","10.ddd/11.evolution-of-design-decisions",{"title":2741,"path":2742,"stem":2743},"Глава 12. EventStorming","/ddd/event-storming","10.ddd/12.event-storming",{"title":2745,"path":2746,"stem":2747},"Глава 13. DDD на Практиці","/ddd/ddd-in-practice","10.ddd/13.ddd-in-practice",{"title":2749,"icon":2750,"path":2751,"stem":2752,"children":2753,"page":59},"Media Streaming","i-lucide-video","/media-streaming","11.media-streaming",[2754,2758,2762,2766,2770,2774,2778],{"title":2755,"path":2756,"stem":2757},"01. Магія Стрімінгу: Що відбувається, коли ви натискаєте \"Play\"","/media-streaming/introduction","11.media-streaming/01.introduction",{"title":2759,"path":2760,"stem":2761},"02. Анатомія Медіа: Кодеки, Контейнери та Стиснення","/media-streaming/audio-video-anatomy","11.media-streaming/02.audio-video-anatomy",{"title":2763,"path":2764,"stem":2765},"03. The Gym: FFmpeg Deep Dive","/media-streaming/ffmpeg-gym","11.media-streaming/03.ffmpeg-gym",{"title":2767,"path":2768,"stem":2769},"04. HLS Protocol: HTTP Live Streaming у Деталях","/media-streaming/hls-protocol","11.media-streaming/04.hls-protocol",{"title":2771,"path":2772,"stem":2773},"05. DASH Protocol: Відкритий Стандарт","/media-streaming/dash-protocol","11.media-streaming/05.dash-protocol",{"title":2775,"path":2776,"stem":2777},"06. Масштабування: CDN та Adaptive Bitrate","/media-streaming/cdn-and-adaptive-bitrate","11.media-streaming/06.cdn-and-adaptive-bitrate",{"title":2779,"path":2780,"stem":2781},"07. Війна із Затримкою (Latency)","/media-streaming/realtime-latency","11.media-streaming/07.realtime-latency",{"title":2783,"icon":2784,"path":2785,"stem":2786,"children":2787,"page":59},"HTML & CSS","i-devicon-html5","/html-css","12.html-css",[2788,2792,2796,2800,2804,2808,2812,2816,2820,2824,2828,2832,2836,2840,2844,2848,2852,2856,2860,2864,2868,2872,2876,2880,2884,2888,2892,2896,2900,2904],{"title":2789,"path":2790,"stem":2791},"Вступ до HTML. Структура документа","/html-css/intro-html-structure","12.html-css/01.intro-html-structure",{"title":2793,"path":2794,"stem":2795},"Форматування тексту в HTML","/html-css/html-text-formatting","12.html-css/02.html-text-formatting",{"title":2797,"path":2798,"stem":2799},"Посилання та зображення в HTML","/html-css/html-links-images","12.html-css/03.html-links-images",{"title":2801,"path":2802,"stem":2803},"Списки та таблиці в HTML","/html-css/html-lists-tables","12.html-css/04.html-lists-tables",{"title":2805,"path":2806,"stem":2807},"Форми в HTML","/html-css/html-forms","12.html-css/05.html-forms",{"title":2809,"path":2810,"stem":2811},"Семантичні елементи HTML5","/html-css/html-semantic-elements","12.html-css/06.html-semantic-elements",{"title":2813,"path":2814,"stem":2815},"Мультимедіа та розширені елементи HTML","/html-css/html-multimedia-advanced","12.html-css/07.html-multimedia-advanced",{"title":2817,"path":2818,"stem":2819},"Мікророзмітка та SEO в HTML","/html-css/html-microdata-seo","12.html-css/08.html-microdata-seo",{"title":2821,"path":2822,"stem":2823},"Вступ до CSS. Селектори та специфічність","/html-css/css-intro-selectors","12.html-css/09.css-intro-selectors",{"title":2825,"path":2826,"stem":2827},"Блокова модель CSS. Відступи. Box Sizing","/html-css/css-box-model","12.html-css/10.css-box-model",{"title":2829,"path":2830,"stem":2831},"Розміри у CSS: повний довідник одиниць і ключових слів","/html-css/10a.css-sizing","12.html-css/10a.css-sizing",{"title":2833,"path":2834,"stem":2835},"Типографіка в CSS. Шрифти та текст","/html-css/css-typography","12.html-css/11.css-typography",{"title":2837,"path":2838,"stem":2839},"Кольори та фони в CSS","/html-css/css-colors-backgrounds","12.html-css/12.css-colors-backgrounds",{"title":2841,"path":2842,"stem":2843},"Тіні та фільтри в CSS","/html-css/12b.css-shadows-filters","12.html-css/12b.css-shadows-filters",{"title":2845,"path":2846,"stem":2847},"CSS Flexbox: Фундамент гнучких макетів","/html-css/css-flexbox-fundamentals","12.html-css/13.css-flexbox-fundamentals",{"title":2849,"path":2850,"stem":2851},"CSS Flexbox: Вирівнювання та Позиціонування","/html-css/css-flexbox-alignment-sizing-and-patterns","12.html-css/14.css-flexbox-alignment-sizing-and-patterns",{"title":2853,"path":2854,"stem":2855},"CSS Grid. Двовимірний макет. Частина 1","/html-css/css-layout-grid","12.html-css/15.css-layout-grid",{"title":2857,"path":2858,"stem":2859},"CSS Grid. Двовимірний макет. Частина 2","/html-css/css-layout-grid-advanced","12.html-css/16.css-layout-grid-advanced",{"title":2861,"path":2862,"stem":2863},"Позиціонування в CSS. Z-index. Stacking Context","/html-css/css-positioning","12.html-css/17.css-positioning",{"title":2865,"path":2866,"stem":2867},"CSS Анімації та Переходи","/html-css/css-animations-transitions","12.html-css/18.css-animations-transitions",{"title":2869,"path":2870,"stem":2871},"Адаптивний дизайн. Media Queries. Частина 1","/html-css/css-responsive-media-queries","12.html-css/19.css-responsive-media-queries",{"title":2873,"path":2874,"stem":2875},"Адаптивний дизайн. Частина 2: clamp(), Container Queries, @layer","/html-css/css-responsive-advanced","12.html-css/20.css-responsive-advanced",{"title":2877,"path":2878,"stem":2879},"CSS Custom Properties. Методології. Сучасний CSS","/html-css/css-variables-methodologies","12.html-css/21.css-variables-methodologies",{"title":2881,"path":2882,"stem":2883},"Сучасний CSS 2023–2025: Нові можливості","/html-css/css-modern-features","12.html-css/22.css-modern-features",{"title":2885,"path":2886,"stem":2887},"CSS Nesting, @layer, @scope та @property: нативний препроцесор","/html-css/22a.css-nesting-modern-syntax","12.html-css/22a.css-nesting-modern-syntax",{"title":2889,"path":2890,"stem":2891},"CSS для форм та інтерактивних станів","/html-css/css-forms-interactive-states","12.html-css/23.css-forms-interactive-states",{"title":2893,"path":2894,"stem":2895},"Доступність у CSS (CSS Accessibility)","/html-css/css-accessibility","12.html-css/24.css-accessibility",{"title":2897,"path":2898,"stem":2899},"CSS-функції та сучасні sizing primitives","/html-css/css-functions-sizing","12.html-css/25.css-functions-sizing",{"title":2901,"path":2902,"stem":2903},"Rendering Pipeline і CSS Performance","/html-css/css-rendering-performance","12.html-css/26.css-rendering-performance",{"title":2905,"path":2906,"stem":2907},"CSS Best Practices: типові ситуації та правильні рішення","/html-css/css-best-practices","12.html-css/27.css-best-practices",{"title":2909,"path":2910,"stem":2911,"children":2912,"page":59},"Tailwind","/tailwind","21.tailwind",[2913,2917,2921,2925,2929,2933,2937,2941],{"title":2914,"path":2915,"stem":2916},"Що таке Tailwind CSS і навіщо він потрібен","/tailwind/tailwind-intro-philosophy","21.tailwind/01.tailwind-intro-philosophy",{"title":2918,"path":2919,"stem":2920},"Встановлення та налаштування Tailwind CSS v4","/tailwind/tailwind-installation-setup","21.tailwind/02.tailwind-installation-setup",{"title":2922,"path":2923,"stem":2924},"Utility-класи: основи та система Tailwind","/tailwind/tailwind-utility-classes-core","21.tailwind/03.tailwind-utility-classes-core",{"title":2926,"path":2927,"stem":2928},"Layout: Flexbox та Grid через Tailwind","/tailwind/tailwind-flexbox-grid","21.tailwind/04.tailwind-flexbox-grid",{"title":2930,"path":2931,"stem":2932},"Кастомізація теми через @theme у Tailwind v4","/tailwind/tailwind-theme-customization","21.tailwind/05.tailwind-theme-customization",{"title":2934,"path":2935,"stem":2936},"Варіанти: hover, focus, responsive, dark mode та нові v4","/tailwind/tailwind-variants-states","21.tailwind/06.tailwind-variants-states",{"title":2938,"path":2939,"stem":2940},"Типографіка та система кольорів у Tailwind v4","/tailwind/tailwind-typography-colors","21.tailwind/07.tailwind-typography-colors",{"title":2942,"path":2943,"stem":2944},"Компоненти та повторюваність: @apply, @utility та патерни","/tailwind/tailwind-components-patterns","21.tailwind/08.tailwind-components-patterns",{"title":2946,"path":2947,"stem":2948},"Showcase Компонентів kostyl.dev","/test-new-components","98.test-new-components",{"id":2950,"title":1381,"body":2951,"description":28286,"extension":28287,"links":28288,"meta":28289,"navigation":4262,"path":1382,"seo":28290,"stem":1383,"__hash__":28291},"docs/01.csharp/12.desktop-ui/04c.handycontrol-library.md",{"type":2952,"value":2953,"toc":28193},"minimark",[2954,2958,2963,2967,2970,2973,2976,2999,3004,3007,3035,3038,3064,3068,3072,3075,3078,3101,3104,3125,3128,3149,3153,3160,3166,3349,3360,3363,3440,3455,3459,3462,3468,3788,4197,4200,4221,4225,4228,4234,4395,4398,4402,4406,4409,4415,4421,4427,4433,4562,4565,4761,4764,4918,4922,4925,4928,4984,4990,5308,5313,5403,5411,5415,5422,5425,5758,5764,5860,5864,5867,5870,5887,5890,6166,6169,6173,6176,6180,6183,6188,6369,6687,6693,6811,6817,6869,6872,7049,7055,7121,7127,7315,7362,7366,7369,7374,7424,7431,7451,7456,7514,7519,7576,7583,7589,7649,7655,7697,7700,7777,7783,7833,7835,7980,8262,8266,8269,8275,8334,8340,8401,8407,8448,8454,8485,8491,8522,8525,8539,8543,8549,8627,8633,8703,8706,8712,8787,8793,8859,9125,9131,9207,9210,9214,9217,9221,9227,9337,9340,9346,9492,9495,9521,9527,9749,9752,9758,9835,9839,9845,10024,10226,10229,10261,10267,10382,10388,10511,10514,10518,10521,10571,10574,10580,10624,10638,10642,10646,10649,10655,10742,10745,10759,10765,10846,10849,10855,11061,11064,11070,11263,11267,11273,11435,11438,11458,11464,11647,11650,11664,11670,11721,11723,11808,11812,11818,12023,12029,12313,12316,12336,12342,12514,12518,12522,12528,12893,12896,12910,12916,13132,13138,13296,13302,13343,13346,13573,13577,13583,13717,13720,13731,13737,13934,13940,14065,14343,14347,14353,14561,14567,14658,14661,14672,14678,14718,14721,14725,14728,14734,14805,14808,14822,14826,14830,14836,14891,14894,14900,14957,14960,14966,15014,15017,15028,15032,15035,15041,15093,15096,15102,15139,15143,15149,15199,15202,15206,15210,15216,15380,15383,15386,15418,15464,15470,15512,15589,15593,15599,15638,15644,15681,15684,15690,15738,15992,15996,16001,16159,16162,16166,16170,16176,16223,16226,16237,16241,16247,16269,16272,16278,16328,16332,16338,16387,16390,16396,16445,16449,16455,16538,16541,16547,16651,16654,16658,16661,16665,16670,16717,16723,16767,16773,16803,16809,16857,16861,16867,16955,16959,16962,17084,17088,17092,17095,17099,19463,19468,19940,19944,19947,19952,21173,21178,22069,22073,22076,22081,23522,23527,25547,25551,25555,25558,25563,25577,25582,25651,25656,25659,25744,25749,25752,25761,25766,25790,25794,25797,25802,26069,26074,26356,26360,26365,26368,26382,26387,26511,26516,26519,26523,26792,26795,26800,26820,26825,26842,26846,26852,26858,26864,26870,26876,26880,26883,26888,26902,26907,26914,26954,26961,27070,27077,27080,27087,27090,27094,27099,27106,27114,27119,27305,27310,27313,27317,27320,27335,27436,27439,27442,27463,27502,27506,27509,27515,27520,27534,27538,27543,27547,27558,27562,27567,27571,27582,27586,27591,27595,27606,27610,27614,27620,27625,27671,27676,27690,27694,27699,27703,27759,27763,27780,27784,27789,27793,27904,27908,27934,27938,27941,27944,27947,27950,27953,28007,28011,28016,28052,28057,28083,28088,28114,28119,28150,28155,28189],[2955,2956,1381],"h1",{"id":2957},"handycontrol-велика-бібліотека-ui-контролів-для-wpf",[2959,2960,2962],"h2",{"id":2961},"вступ","Вступ",[2964,2965,2966],"p",{},"Уявіть собі бібліотеку, яка надає вам понад 80 готових до використання UI контролів — від простих кнопок з анімаціями до складних компонентів як редактор коду, календар з годинником, порівняння зображень, та навіть waterfall layout панелі. HandyControl — це саме така бібліотека, яка виникла в китайській open-source спільноті та швидко стала однією з найбільших колекцій UI компонентів для WPF.",[2964,2968,2969],{},"На відміну від WPF UI, яка фокусується на точному відтворенні Fluent Design System від Microsoft, HandyControl пропонує власний стиль, схожий на Material Design, але з унікальними елементами. Це бібліотека з філософією \"Everything you need\" — вона намагається покрити максимально широкий спектр сценаріїв використання, від базових форм до складних enterprise додатків.",[2964,2971,2972],{},"HandyControl розробляється переважно китайською спільнотою, що має як переваги (активна розробка, багато контролів), так і недоліки (документація переважно китайською мовою). Проте завдяки великій кількості прикладів та demo додатку, навіть без знання китайської мови можна швидко розібратися з основними можливостями.",[2964,2974,2975],{},"Бібліотека підтримує як .NET Framework 4.6.2+, так і сучасні версії .NET 6/7/8, що робить її універсальним рішенням для різних типів проектів. Вона включає систему тем з підтримкою світлої та темної теми, велику колекцію іконок, анімації, та навіть деякі базові графіки.",[2977,2978,2980,2987,2993],"note",{"title":2979},"Порівняння з іншими бібліотеками",[2964,2981,2982,2986],{},[2983,2984,2985],"strong",{},"HandyControl vs WPF UI",": HandyControl має значно більше контролів (80+ проти 30+), але WPF UI краще інтегрується з Windows 11 завдяки Fluent Design. HandyControl підходить для складних додатків, де потрібна велика різноманітність компонентів, тоді як WPF UI — для додатків, які повинні виглядати нативно на Windows 11.",[2964,2988,2989,2992],{},[2983,2990,2991],{},"HandyControl vs ModernWpf",": ModernWpf фокусується на Windows 10 Fluent Design і має менше контролів. HandyControl пропонує більше можливостей, але з власним стилем, який може не підходити для всіх проектів.",[2964,2994,2995,2998],{},[2983,2996,2997],{},"HandyControl vs MahApps.Metro",": Обидві бібліотеки великі та зрілі, але MahApps.Metro має Metro стиль (Windows 8), тоді як HandyControl — більш сучасний Material-like стиль.",[3000,3001,3003],"h3",{"id":3002},"коли-використовувати-handycontrol","Коли використовувати HandyControl",[2964,3005,3006],{},"HandyControl найкраще підходить для:",[3008,3009,3010,3017,3023,3029],"ul",{},[3011,3012,3013,3016],"li",{},[2983,3014,3015],{},"Складних enterprise додатків"," з великою кількістю різних UI елементів (CRM, ERP, admin панелі)",[3011,3018,3019,3022],{},[2983,3020,3021],{},"Dashboard та аналітичних додатків",", де потрібні графіки, gauge, timeline",[3011,3024,3025,3028],{},[2983,3026,3027],{},"Внутрішніх корпоративних систем",", де важливіша функціональність, ніж точна відповідність Windows 11 дизайну",[3011,3030,3031,3034],{},[2983,3032,3033],{},"Проектів з обмеженим бюджетом на UI/UX",", де потрібно швидко отримати красивий інтерфейс без створення власних контролів",[2964,3036,3037],{},"HandyControl може не підійти для:",[3008,3039,3040,3046,3052,3058],{},[3011,3041,3042,3045],{},[2983,3043,3044],{},"Додатків, які повинні виглядати нативно на Windows 11"," — краще використати WPF UI",[3011,3047,3048,3051],{},[2983,3049,3050],{},"Простих додатків з мінімальним UI"," — HandyControl додасть зайвий розмір (~5-8 MB)",[3011,3053,3054,3057],{},[2983,3055,3056],{},"Проектів з жорсткими вимогами до accessibility"," — HandyControl має обмежену підтримку",[3011,3059,3060,3063],{},[2983,3061,3062],{},"Команд без знання англійської/китайської"," — документація може бути складною",[2959,3065,3067],{"id":3066},"установка-та-базова-інтеграція","Установка та базова інтеграція",[3000,3069,3071],{"id":3070},"установка-nuget-пакету","Установка NuGet пакету",[2964,3073,3074],{},"HandyControl доступний як NuGet пакет і встановлюється стандартним способом. Бібліотека підтримує як .NET Framework 4.6.2 і вище, так і .NET 6/7/8.",[2964,3076,3077],{},"Встановлення через Package Manager Console:",[3079,3080,3085],"pre",{"className":3081,"code":3082,"language":3083,"meta":3084,"style":3084},"language-powershell shiki shiki-themes light-plus dark-plus dark-plus","Install-Package HandyControl\n","powershell","",[3086,3087,3088],"code",{"__ignoreMap":3084},[3089,3090,3093,3097],"span",{"class":3091,"line":3092},"line",1,[3089,3094,3096],{"class":3095},"s8Opu","Install-Package",[3089,3098,3100],{"class":3099},"sHH4Y"," HandyControl\n",[2964,3102,3103],{},"Або через .NET CLI:",[3079,3105,3109],{"className":3106,"code":3107,"language":3108,"meta":3084,"style":3084},"language-bash shiki shiki-themes light-plus dark-plus dark-plus","dotnet add package HandyControl\n","bash",[3086,3110,3111],{"__ignoreMap":3084},[3089,3112,3113,3116,3120,3123],{"class":3091,"line":3092},[3089,3114,3115],{"class":3095},"dotnet",[3089,3117,3119],{"class":3118},"sbdoH"," add",[3089,3121,3122],{"class":3118}," package",[3089,3124,3100],{"class":3118},[2964,3126,3127],{},"Або через NuGet Package Manager в Visual Studio: шукайте \"HandyControl\" та встановіть останню стабільну версію.",[3129,3130,3132,3135,3146],"tip",{"title":3131},"Версії та сумісність",[2964,3133,3134],{},"На момент написання статті актуальна версія HandyControl — 3.5.x. Перевіряйте сумісність з вашою версією .NET:",[3008,3136,3137,3140,3143],{},[3011,3138,3139],{},".NET Framework 4.6.2+ — всі версії HandyControl",[3011,3141,3142],{},".NET 6/7/8 — HandyControl 3.4+",[3011,3144,3145],{},".NET Core 3.1 — HandyControl 3.0+",[2964,3147,3148],{},"Для production проектів рекомендується використовувати стабільні релізи, а не preview версії.",[3000,3150,3152],{"id":3151},"підключення-тем-у-appxaml","Підключення тем у App.xaml",[2964,3154,3155,3156,3159],{},"Після установки пакету необхідно підключити теми HandyControl у файлі ",[3086,3157,3158],{},"App.xaml",". HandyControl використовує систему ResourceDictionary для завантаження стилів та тем.",[2964,3161,3162,3163,3165],{},"Базова конфігурація ",[3086,3164,3158],{},":",[3079,3167,3171],{"className":3168,"code":3169,"language":3170,"meta":3084,"style":3084},"language-xml shiki shiki-themes light-plus dark-plus dark-plus","\u003CApplication x:Class=\"HandyControlDemo.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n             StartupUri=\"MainWindow.xaml\">\n    \u003CApplication.Resources>\n        \u003CResourceDictionary>\n            \u003CResourceDictionary.MergedDictionaries>\n                \u003C!-- Основна тема HandyControl -->\n                \u003Chc:ThemeResources/>\n                \u003C!-- Тема для контролів -->\n                \u003Chc:Theme/>\n            \u003C/ResourceDictionary.MergedDictionaries>\n        \u003C/ResourceDictionary>\n    \u003C/Application.Resources>\n\u003C/Application>\n","xml",[3086,3172,3173,3194,3205,3216,3227,3241,3252,3263,3274,3281,3293,3299,3309,3319,3329,3339],{"__ignoreMap":3084},[3089,3174,3175,3179,3183,3187,3190],{"class":3091,"line":3092},[3089,3176,3178],{"class":3177},"s0P7L","\u003C",[3089,3180,3182],{"class":3181},"sKtos","Application",[3089,3184,3186],{"class":3185},"sa4r_"," x:Class",[3089,3188,3189],{"class":3099},"=",[3089,3191,3193],{"class":3192},"su9tN","\"HandyControlDemo.App\"\n",[3089,3195,3197,3200,3202],{"class":3091,"line":3196},2,[3089,3198,3199],{"class":3185},"             xmlns",[3089,3201,3189],{"class":3099},[3089,3203,3204],{"class":3192},"\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n",[3089,3206,3208,3211,3213],{"class":3091,"line":3207},3,[3089,3209,3210],{"class":3185},"             xmlns:x",[3089,3212,3189],{"class":3099},[3089,3214,3215],{"class":3192},"\"http://schemas.microsoft.com/winfx/2006/xaml\"\n",[3089,3217,3219,3222,3224],{"class":3091,"line":3218},4,[3089,3220,3221],{"class":3185},"             xmlns:hc",[3089,3223,3189],{"class":3099},[3089,3225,3226],{"class":3192},"\"https://handyorg.github.io/handycontrol\"\n",[3089,3228,3230,3233,3235,3238],{"class":3091,"line":3229},5,[3089,3231,3232],{"class":3185},"             StartupUri",[3089,3234,3189],{"class":3099},[3089,3236,3237],{"class":3192},"\"MainWindow.xaml\"",[3089,3239,3240],{"class":3177},">\n",[3089,3242,3244,3247,3250],{"class":3091,"line":3243},6,[3089,3245,3246],{"class":3177},"    \u003C",[3089,3248,3249],{"class":3181},"Application.Resources",[3089,3251,3240],{"class":3177},[3089,3253,3255,3258,3261],{"class":3091,"line":3254},7,[3089,3256,3257],{"class":3177},"        \u003C",[3089,3259,3260],{"class":3181},"ResourceDictionary",[3089,3262,3240],{"class":3177},[3089,3264,3266,3269,3272],{"class":3091,"line":3265},8,[3089,3267,3268],{"class":3177},"            \u003C",[3089,3270,3271],{"class":3181},"ResourceDictionary.MergedDictionaries",[3089,3273,3240],{"class":3177},[3089,3275,3277],{"class":3091,"line":3276},9,[3089,3278,3280],{"class":3279},"spJ8K","                \u003C!-- Основна тема HandyControl -->\n",[3089,3282,3284,3287,3290],{"class":3091,"line":3283},10,[3089,3285,3286],{"class":3177},"                \u003C",[3089,3288,3289],{"class":3181},"hc:ThemeResources",[3089,3291,3292],{"class":3177},"/>\n",[3089,3294,3296],{"class":3091,"line":3295},11,[3089,3297,3298],{"class":3279},"                \u003C!-- Тема для контролів -->\n",[3089,3300,3302,3304,3307],{"class":3091,"line":3301},12,[3089,3303,3286],{"class":3177},[3089,3305,3306],{"class":3181},"hc:Theme",[3089,3308,3292],{"class":3177},[3089,3310,3312,3315,3317],{"class":3091,"line":3311},13,[3089,3313,3314],{"class":3177},"            \u003C/",[3089,3316,3271],{"class":3181},[3089,3318,3240],{"class":3177},[3089,3320,3322,3325,3327],{"class":3091,"line":3321},14,[3089,3323,3324],{"class":3177},"        \u003C/",[3089,3326,3260],{"class":3181},[3089,3328,3240],{"class":3177},[3089,3330,3332,3335,3337],{"class":3091,"line":3331},15,[3089,3333,3334],{"class":3177},"    \u003C/",[3089,3336,3249],{"class":3181},[3089,3338,3240],{"class":3177},[3089,3340,3342,3345,3347],{"class":3091,"line":3341},16,[3089,3343,3344],{"class":3177},"\u003C/",[3089,3346,3182],{"class":3181},[3089,3348,3240],{"class":3177},[2964,3350,3351,3352,3355,3356,3359],{},"Це мінімальна конфігурація, яка завантажує стандартну світлу тему HandyControl. Компонент ",[3086,3353,3354],{},"ThemeResources"," завантажує кольори та ресурси теми, а ",[3086,3357,3358],{},"Theme"," — стилі для всіх контролів.",[2964,3361,3362],{},"Якщо ви хочете використовувати темну тему за замовчуванням:",[3079,3364,3366],{"className":3168,"code":3365,"language":3170,"meta":3084,"style":3084},"\u003CApplication.Resources>\n    \u003CResourceDictionary>\n        \u003CResourceDictionary.MergedDictionaries>\n            \u003Chc:ThemeResources RequestedTheme=\"Dark\"/>\n            \u003Chc:Theme/>\n        \u003C/ResourceDictionary.MergedDictionaries>\n    \u003C/ResourceDictionary>\n\u003C/Application.Resources>\n",[3086,3367,3368,3376,3384,3392,3408,3416,3424,3432],{"__ignoreMap":3084},[3089,3369,3370,3372,3374],{"class":3091,"line":3092},[3089,3371,3178],{"class":3177},[3089,3373,3249],{"class":3181},[3089,3375,3240],{"class":3177},[3089,3377,3378,3380,3382],{"class":3091,"line":3196},[3089,3379,3246],{"class":3177},[3089,3381,3260],{"class":3181},[3089,3383,3240],{"class":3177},[3089,3385,3386,3388,3390],{"class":3091,"line":3207},[3089,3387,3257],{"class":3177},[3089,3389,3271],{"class":3181},[3089,3391,3240],{"class":3177},[3089,3393,3394,3396,3398,3401,3403,3406],{"class":3091,"line":3218},[3089,3395,3268],{"class":3177},[3089,3397,3289],{"class":3181},[3089,3399,3400],{"class":3185}," RequestedTheme",[3089,3402,3189],{"class":3099},[3089,3404,3405],{"class":3192},"\"Dark\"",[3089,3407,3292],{"class":3177},[3089,3409,3410,3412,3414],{"class":3091,"line":3229},[3089,3411,3268],{"class":3177},[3089,3413,3306],{"class":3181},[3089,3415,3292],{"class":3177},[3089,3417,3418,3420,3422],{"class":3091,"line":3243},[3089,3419,3324],{"class":3177},[3089,3421,3271],{"class":3181},[3089,3423,3240],{"class":3177},[3089,3425,3426,3428,3430],{"class":3091,"line":3254},[3089,3427,3334],{"class":3177},[3089,3429,3260],{"class":3181},[3089,3431,3240],{"class":3177},[3089,3433,3434,3436,3438],{"class":3091,"line":3265},[3089,3435,3344],{"class":3177},[3089,3437,3249],{"class":3181},[3089,3439,3240],{"class":3177},[2964,3441,3442,3443,3446,3447,3450,3451,3454],{},"Параметр ",[3086,3444,3445],{},"RequestedTheme"," може приймати значення ",[3086,3448,3449],{},"Light"," або ",[3086,3452,3453],{},"Dark",".",[3000,3456,3458],{"id":3457},"перше-вікно-з-handycontrol","Перше вікно з HandyControl",[2964,3460,3461],{},"Після підключення тем можна створити перше вікно з використанням HandyControl. Навіть базове вікно автоматично отримає покращений вигляд завдяки стилям бібліотеки.",[2964,3463,3464,3465,3165],{},"Простий приклад ",[3086,3466,3467],{},"MainWindow.xaml",[3079,3469,3471],{"className":3168,"code":3470,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"HandyControlDemo.MainWindow\"\n           xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n           xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n           Title=\"HandyControl Demo\" \n           Height=\"450\" \n           Width=\"800\">\n    \u003CGrid Margin=\"20\">\n        \u003CStackPanel>\n            \u003CTextBlock Text=\"Ласкаво просимо до HandyControl!\" \n                       FontSize=\"24\" \n                       FontWeight=\"Bold\"\n                       Margin=\"0,0,0,20\"/>\n            \n            \u003Chc:TextBox hc:InfoElement.Title=\"Ім'я користувача\"\n                        hc:InfoElement.Placeholder=\"Введіть ваше ім'я\"\n                        Margin=\"0,0,0,10\"/>\n            \n            \u003Chc:PasswordBox hc:InfoElement.Title=\"Пароль\"\n                            hc:InfoElement.Placeholder=\"Введіть пароль\"\n                            Margin=\"0,0,0,20\"/>\n            \n            \u003Chc:Button Content=\"Увійти\" \n                       Style=\"{StaticResource ButtonPrimary}\"\n                       HorizontalAlignment=\"Left\"/>\n        \u003C/StackPanel>\n    \u003C/Grid>\n\u003C/hc:Window>\n",[3086,3472,3473,3487,3496,3505,3514,3527,3539,3551,3568,3577,3594,3606,3616,3628,3633,3648,3658,3671,3676,3691,3702,3714,3719,3737,3748,3761,3770,3779],{"__ignoreMap":3084},[3089,3474,3475,3477,3480,3482,3484],{"class":3091,"line":3092},[3089,3476,3178],{"class":3177},[3089,3478,3479],{"class":3181},"hc:Window",[3089,3481,3186],{"class":3185},[3089,3483,3189],{"class":3099},[3089,3485,3486],{"class":3192},"\"HandyControlDemo.MainWindow\"\n",[3089,3488,3489,3492,3494],{"class":3091,"line":3196},[3089,3490,3491],{"class":3185},"           xmlns",[3089,3493,3189],{"class":3099},[3089,3495,3204],{"class":3192},[3089,3497,3498,3501,3503],{"class":3091,"line":3207},[3089,3499,3500],{"class":3185},"           xmlns:x",[3089,3502,3189],{"class":3099},[3089,3504,3215],{"class":3192},[3089,3506,3507,3510,3512],{"class":3091,"line":3218},[3089,3508,3509],{"class":3185},"           xmlns:hc",[3089,3511,3189],{"class":3099},[3089,3513,3226],{"class":3192},[3089,3515,3516,3519,3521,3524],{"class":3091,"line":3229},[3089,3517,3518],{"class":3185},"           Title",[3089,3520,3189],{"class":3099},[3089,3522,3523],{"class":3192},"\"HandyControl Demo\"",[3089,3525,3526],{"class":3099}," \n",[3089,3528,3529,3532,3534,3537],{"class":3091,"line":3243},[3089,3530,3531],{"class":3185},"           Height",[3089,3533,3189],{"class":3099},[3089,3535,3536],{"class":3192},"\"450\"",[3089,3538,3526],{"class":3099},[3089,3540,3541,3544,3546,3549],{"class":3091,"line":3254},[3089,3542,3543],{"class":3185},"           Width",[3089,3545,3189],{"class":3099},[3089,3547,3548],{"class":3192},"\"800\"",[3089,3550,3240],{"class":3177},[3089,3552,3553,3555,3558,3561,3563,3566],{"class":3091,"line":3265},[3089,3554,3246],{"class":3177},[3089,3556,3557],{"class":3181},"Grid",[3089,3559,3560],{"class":3185}," Margin",[3089,3562,3189],{"class":3099},[3089,3564,3565],{"class":3192},"\"20\"",[3089,3567,3240],{"class":3177},[3089,3569,3570,3572,3575],{"class":3091,"line":3276},[3089,3571,3257],{"class":3177},[3089,3573,3574],{"class":3181},"StackPanel",[3089,3576,3240],{"class":3177},[3089,3578,3579,3581,3584,3587,3589,3592],{"class":3091,"line":3283},[3089,3580,3268],{"class":3177},[3089,3582,3583],{"class":3181},"TextBlock",[3089,3585,3586],{"class":3185}," Text",[3089,3588,3189],{"class":3099},[3089,3590,3591],{"class":3192},"\"Ласкаво просимо до HandyControl!\"",[3089,3593,3526],{"class":3099},[3089,3595,3596,3599,3601,3604],{"class":3091,"line":3295},[3089,3597,3598],{"class":3185},"                       FontSize",[3089,3600,3189],{"class":3099},[3089,3602,3603],{"class":3192},"\"24\"",[3089,3605,3526],{"class":3099},[3089,3607,3608,3611,3613],{"class":3091,"line":3301},[3089,3609,3610],{"class":3185},"                       FontWeight",[3089,3612,3189],{"class":3099},[3089,3614,3615],{"class":3192},"\"Bold\"\n",[3089,3617,3618,3621,3623,3626],{"class":3091,"line":3311},[3089,3619,3620],{"class":3185},"                       Margin",[3089,3622,3189],{"class":3099},[3089,3624,3625],{"class":3192},"\"0,0,0,20\"",[3089,3627,3292],{"class":3177},[3089,3629,3630],{"class":3091,"line":3321},[3089,3631,3632],{"class":3099},"            \n",[3089,3634,3635,3637,3640,3643,3645],{"class":3091,"line":3331},[3089,3636,3268],{"class":3177},[3089,3638,3639],{"class":3181},"hc:TextBox",[3089,3641,3642],{"class":3185}," hc:InfoElement.Title",[3089,3644,3189],{"class":3099},[3089,3646,3647],{"class":3192},"\"Ім'я користувача\"\n",[3089,3649,3650,3653,3655],{"class":3091,"line":3341},[3089,3651,3652],{"class":3185},"                        hc:InfoElement.Placeholder",[3089,3654,3189],{"class":3099},[3089,3656,3657],{"class":3192},"\"Введіть ваше ім'я\"\n",[3089,3659,3661,3664,3666,3669],{"class":3091,"line":3660},17,[3089,3662,3663],{"class":3185},"                        Margin",[3089,3665,3189],{"class":3099},[3089,3667,3668],{"class":3192},"\"0,0,0,10\"",[3089,3670,3292],{"class":3177},[3089,3672,3674],{"class":3091,"line":3673},18,[3089,3675,3632],{"class":3099},[3089,3677,3679,3681,3684,3686,3688],{"class":3091,"line":3678},19,[3089,3680,3268],{"class":3177},[3089,3682,3683],{"class":3181},"hc:PasswordBox",[3089,3685,3642],{"class":3185},[3089,3687,3189],{"class":3099},[3089,3689,3690],{"class":3192},"\"Пароль\"\n",[3089,3692,3694,3697,3699],{"class":3091,"line":3693},20,[3089,3695,3696],{"class":3185},"                            hc:InfoElement.Placeholder",[3089,3698,3189],{"class":3099},[3089,3700,3701],{"class":3192},"\"Введіть пароль\"\n",[3089,3703,3705,3708,3710,3712],{"class":3091,"line":3704},21,[3089,3706,3707],{"class":3185},"                            Margin",[3089,3709,3189],{"class":3099},[3089,3711,3625],{"class":3192},[3089,3713,3292],{"class":3177},[3089,3715,3717],{"class":3091,"line":3716},22,[3089,3718,3632],{"class":3099},[3089,3720,3722,3724,3727,3730,3732,3735],{"class":3091,"line":3721},23,[3089,3723,3268],{"class":3177},[3089,3725,3726],{"class":3181},"hc:Button",[3089,3728,3729],{"class":3185}," Content",[3089,3731,3189],{"class":3099},[3089,3733,3734],{"class":3192},"\"Увійти\"",[3089,3736,3526],{"class":3099},[3089,3738,3740,3743,3745],{"class":3091,"line":3739},24,[3089,3741,3742],{"class":3185},"                       Style",[3089,3744,3189],{"class":3099},[3089,3746,3747],{"class":3192},"\"{StaticResource ButtonPrimary}\"\n",[3089,3749,3751,3754,3756,3759],{"class":3091,"line":3750},25,[3089,3752,3753],{"class":3185},"                       HorizontalAlignment",[3089,3755,3189],{"class":3099},[3089,3757,3758],{"class":3192},"\"Left\"",[3089,3760,3292],{"class":3177},[3089,3762,3764,3766,3768],{"class":3091,"line":3763},26,[3089,3765,3324],{"class":3177},[3089,3767,3574],{"class":3181},[3089,3769,3240],{"class":3177},[3089,3771,3773,3775,3777],{"class":3091,"line":3772},27,[3089,3774,3334],{"class":3177},[3089,3776,3557],{"class":3181},[3089,3778,3240],{"class":3177},[3089,3780,3782,3784,3786],{"class":3091,"line":3781},28,[3089,3783,3344],{"class":3177},[3089,3785,3479],{"class":3181},[3089,3787,3240],{"class":3177},[3789,3790,3791],"wpf-preview",{},[3079,3792,3794],{"className":3168,"code":3793,"language":3170,"meta":3084,"style":3084},"\u003CGrid Margin=\"20\" Background=\"White\">\n    \u003CStackPanel>\n        \u003CTextBlock Text=\"Ласкаво просимо до HandyControl!\" \n                   FontSize=\"24\" \n                   FontWeight=\"Bold\"\n                   Margin=\"0,0,0,20\"/>\n        \n        \u003CBorder BorderBrush=\"#DCDCDC\" BorderThickness=\"1\" Padding=\"10\" Margin=\"0,0,0,10\">\n            \u003CStackPanel>\n                \u003CTextBlock Text=\"Ім'я користувача\" FontSize=\"12\" Foreground=\"#666\" Margin=\"0,0,0,5\"/>\n                \u003CTextBox Text=\"\" BorderThickness=\"0\"/>\n            \u003C/StackPanel>\n        \u003C/Border>\n        \n        \u003CBorder BorderBrush=\"#DCDCDC\" BorderThickness=\"1\" Padding=\"10\" Margin=\"0,0,0,20\">\n            \u003CStackPanel>\n                \u003CTextBlock Text=\"Пароль\" FontSize=\"12\" Foreground=\"#666\" Margin=\"0,0,0,5\"/>\n                \u003CPasswordBox BorderThickness=\"0\"/>\n            \u003C/StackPanel>\n        \u003C/Border>\n        \n        \u003CButton Content=\"Увійти\" \n                Background=\"#1E90FF\" \n                Foreground=\"White\"\n                Padding=\"20,8\"\n                BorderThickness=\"0\"\n                HorizontalAlignment=\"Left\"/>\n    \u003C/StackPanel>\n\u003C/Grid>\n",[3086,3795,3796,3818,3826,3840,3851,3860,3871,3876,3915,3923,3961,3984,3992,4000,4004,4036,4044,4077,4092,4100,4108,4112,4127,4139,4149,4159,4169,4180,4188],{"__ignoreMap":3084},[3089,3797,3798,3800,3802,3804,3806,3808,3811,3813,3816],{"class":3091,"line":3092},[3089,3799,3178],{"class":3177},[3089,3801,3557],{"class":3181},[3089,3803,3560],{"class":3185},[3089,3805,3189],{"class":3099},[3089,3807,3565],{"class":3192},[3089,3809,3810],{"class":3185}," Background",[3089,3812,3189],{"class":3099},[3089,3814,3815],{"class":3192},"\"White\"",[3089,3817,3240],{"class":3177},[3089,3819,3820,3822,3824],{"class":3091,"line":3196},[3089,3821,3246],{"class":3177},[3089,3823,3574],{"class":3181},[3089,3825,3240],{"class":3177},[3089,3827,3828,3830,3832,3834,3836,3838],{"class":3091,"line":3207},[3089,3829,3257],{"class":3177},[3089,3831,3583],{"class":3181},[3089,3833,3586],{"class":3185},[3089,3835,3189],{"class":3099},[3089,3837,3591],{"class":3192},[3089,3839,3526],{"class":3099},[3089,3841,3842,3845,3847,3849],{"class":3091,"line":3218},[3089,3843,3844],{"class":3185},"                   FontSize",[3089,3846,3189],{"class":3099},[3089,3848,3603],{"class":3192},[3089,3850,3526],{"class":3099},[3089,3852,3853,3856,3858],{"class":3091,"line":3229},[3089,3854,3855],{"class":3185},"                   FontWeight",[3089,3857,3189],{"class":3099},[3089,3859,3615],{"class":3192},[3089,3861,3862,3865,3867,3869],{"class":3091,"line":3243},[3089,3863,3864],{"class":3185},"                   Margin",[3089,3866,3189],{"class":3099},[3089,3868,3625],{"class":3192},[3089,3870,3292],{"class":3177},[3089,3872,3873],{"class":3091,"line":3254},[3089,3874,3875],{"class":3099},"        \n",[3089,3877,3878,3880,3883,3886,3888,3891,3894,3896,3899,3902,3904,3907,3909,3911,3913],{"class":3091,"line":3265},[3089,3879,3257],{"class":3177},[3089,3881,3882],{"class":3181},"Border",[3089,3884,3885],{"class":3185}," BorderBrush",[3089,3887,3189],{"class":3099},[3089,3889,3890],{"class":3192},"\"#DCDCDC\"",[3089,3892,3893],{"class":3185}," BorderThickness",[3089,3895,3189],{"class":3099},[3089,3897,3898],{"class":3192},"\"1\"",[3089,3900,3901],{"class":3185}," Padding",[3089,3903,3189],{"class":3099},[3089,3905,3906],{"class":3192},"\"10\"",[3089,3908,3560],{"class":3185},[3089,3910,3189],{"class":3099},[3089,3912,3668],{"class":3192},[3089,3914,3240],{"class":3177},[3089,3916,3917,3919,3921],{"class":3091,"line":3276},[3089,3918,3268],{"class":3177},[3089,3920,3574],{"class":3181},[3089,3922,3240],{"class":3177},[3089,3924,3925,3927,3929,3931,3933,3936,3939,3941,3944,3947,3949,3952,3954,3956,3959],{"class":3091,"line":3283},[3089,3926,3286],{"class":3177},[3089,3928,3583],{"class":3181},[3089,3930,3586],{"class":3185},[3089,3932,3189],{"class":3099},[3089,3934,3935],{"class":3192},"\"Ім'я користувача\"",[3089,3937,3938],{"class":3185}," FontSize",[3089,3940,3189],{"class":3099},[3089,3942,3943],{"class":3192},"\"12\"",[3089,3945,3946],{"class":3185}," Foreground",[3089,3948,3189],{"class":3099},[3089,3950,3951],{"class":3192},"\"#666\"",[3089,3953,3560],{"class":3185},[3089,3955,3189],{"class":3099},[3089,3957,3958],{"class":3192},"\"0,0,0,5\"",[3089,3960,3292],{"class":3177},[3089,3962,3963,3965,3968,3970,3972,3975,3977,3979,3982],{"class":3091,"line":3295},[3089,3964,3286],{"class":3177},[3089,3966,3967],{"class":3181},"TextBox",[3089,3969,3586],{"class":3185},[3089,3971,3189],{"class":3099},[3089,3973,3974],{"class":3192},"\"\"",[3089,3976,3893],{"class":3185},[3089,3978,3189],{"class":3099},[3089,3980,3981],{"class":3192},"\"0\"",[3089,3983,3292],{"class":3177},[3089,3985,3986,3988,3990],{"class":3091,"line":3301},[3089,3987,3314],{"class":3177},[3089,3989,3574],{"class":3181},[3089,3991,3240],{"class":3177},[3089,3993,3994,3996,3998],{"class":3091,"line":3311},[3089,3995,3324],{"class":3177},[3089,3997,3882],{"class":3181},[3089,3999,3240],{"class":3177},[3089,4001,4002],{"class":3091,"line":3321},[3089,4003,3875],{"class":3099},[3089,4005,4006,4008,4010,4012,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032,4034],{"class":3091,"line":3331},[3089,4007,3257],{"class":3177},[3089,4009,3882],{"class":3181},[3089,4011,3885],{"class":3185},[3089,4013,3189],{"class":3099},[3089,4015,3890],{"class":3192},[3089,4017,3893],{"class":3185},[3089,4019,3189],{"class":3099},[3089,4021,3898],{"class":3192},[3089,4023,3901],{"class":3185},[3089,4025,3189],{"class":3099},[3089,4027,3906],{"class":3192},[3089,4029,3560],{"class":3185},[3089,4031,3189],{"class":3099},[3089,4033,3625],{"class":3192},[3089,4035,3240],{"class":3177},[3089,4037,4038,4040,4042],{"class":3091,"line":3341},[3089,4039,3268],{"class":3177},[3089,4041,3574],{"class":3181},[3089,4043,3240],{"class":3177},[3089,4045,4046,4048,4050,4052,4054,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075],{"class":3091,"line":3660},[3089,4047,3286],{"class":3177},[3089,4049,3583],{"class":3181},[3089,4051,3586],{"class":3185},[3089,4053,3189],{"class":3099},[3089,4055,4056],{"class":3192},"\"Пароль\"",[3089,4058,3938],{"class":3185},[3089,4060,3189],{"class":3099},[3089,4062,3943],{"class":3192},[3089,4064,3946],{"class":3185},[3089,4066,3189],{"class":3099},[3089,4068,3951],{"class":3192},[3089,4070,3560],{"class":3185},[3089,4072,3189],{"class":3099},[3089,4074,3958],{"class":3192},[3089,4076,3292],{"class":3177},[3089,4078,4079,4081,4084,4086,4088,4090],{"class":3091,"line":3673},[3089,4080,3286],{"class":3177},[3089,4082,4083],{"class":3181},"PasswordBox",[3089,4085,3893],{"class":3185},[3089,4087,3189],{"class":3099},[3089,4089,3981],{"class":3192},[3089,4091,3292],{"class":3177},[3089,4093,4094,4096,4098],{"class":3091,"line":3678},[3089,4095,3314],{"class":3177},[3089,4097,3574],{"class":3181},[3089,4099,3240],{"class":3177},[3089,4101,4102,4104,4106],{"class":3091,"line":3693},[3089,4103,3324],{"class":3177},[3089,4105,3882],{"class":3181},[3089,4107,3240],{"class":3177},[3089,4109,4110],{"class":3091,"line":3704},[3089,4111,3875],{"class":3099},[3089,4113,4114,4116,4119,4121,4123,4125],{"class":3091,"line":3716},[3089,4115,3257],{"class":3177},[3089,4117,4118],{"class":3181},"Button",[3089,4120,3729],{"class":3185},[3089,4122,3189],{"class":3099},[3089,4124,3734],{"class":3192},[3089,4126,3526],{"class":3099},[3089,4128,4129,4132,4134,4137],{"class":3091,"line":3721},[3089,4130,4131],{"class":3185},"                Background",[3089,4133,3189],{"class":3099},[3089,4135,4136],{"class":3192},"\"#1E90FF\"",[3089,4138,3526],{"class":3099},[3089,4140,4141,4144,4146],{"class":3091,"line":3739},[3089,4142,4143],{"class":3185},"                Foreground",[3089,4145,3189],{"class":3099},[3089,4147,4148],{"class":3192},"\"White\"\n",[3089,4150,4151,4154,4156],{"class":3091,"line":3750},[3089,4152,4153],{"class":3185},"                Padding",[3089,4155,3189],{"class":3099},[3089,4157,4158],{"class":3192},"\"20,8\"\n",[3089,4160,4161,4164,4166],{"class":3091,"line":3763},[3089,4162,4163],{"class":3185},"                BorderThickness",[3089,4165,3189],{"class":3099},[3089,4167,4168],{"class":3192},"\"0\"\n",[3089,4170,4171,4174,4176,4178],{"class":3091,"line":3772},[3089,4172,4173],{"class":3185},"                HorizontalAlignment",[3089,4175,3189],{"class":3099},[3089,4177,3758],{"class":3192},[3089,4179,3292],{"class":3177},[3089,4181,4182,4184,4186],{"class":3091,"line":3781},[3089,4183,3334],{"class":3177},[3089,4185,3574],{"class":3181},[3089,4187,3240],{"class":3177},[3089,4189,4191,4193,4195],{"class":3091,"line":4190},29,[3089,4192,3344],{"class":3177},[3089,4194,3557],{"class":3181},[3089,4196,3240],{"class":3177},[2964,4198,4199],{},"Зверніть увагу на кілька ключових моментів:",[4201,4202,4203,4209,4215],"ol",{},[3011,4204,4205,4208],{},[2983,4206,4207],{},"hc:Window замість Window"," — HandyControl надає власний контрол вікна з покращеним title bar, кнопками мінімізації/максимізації/закриття, та підтримкою тем",[3011,4210,4211,4214],{},[2983,4212,4213],{},"hc:InfoElement attached properties"," — дозволяють додавати заголовки та placeholder до input контролів без додаткових TextBlock",[3011,4216,4217,4220],{},[2983,4218,4219],{},"Style=\"{StaticResource ButtonPrimary}\""," — HandyControl надає набір готових стилів для різних типів кнопок",[3000,4222,4224],{"id":4223},"налаштування-мови","Налаштування мови",[2964,4226,4227],{},"HandyControl підтримує багатомовність і за замовчуванням використовує англійську мову для системних повідомлень (діалоги, валідація, тощо). Бібліотека має вбудовану підтримку китайської та англійської мов.",[2964,4229,4230,4231,3165],{},"Для зміни мови додайте в ",[3086,4232,4233],{},"App.xaml.cs",[3079,4235,4239],{"className":4236,"code":4237,"language":4238,"meta":3084,"style":3084},"language-csharp shiki shiki-themes light-plus dark-plus dark-plus","using HandyControl.Tools;\n\npublic partial class App : Application\n{\n    protected override void OnStartup(StartupEventArgs e)\n    {\n        base.OnStartup(e);\n        \n        // Встановлення англійської мови\n        ConfigHelper.Instance.SetLang(\"en\");\n        \n        // Або китайської\n        // ConfigHelper.Instance.SetLang(\"zh-cn\");\n    }\n}\n","csharp",[3086,4240,4241,4258,4264,4285,4290,4317,4322,4340,4344,4349,4371,4375,4380,4385,4390],{"__ignoreMap":3084},[3089,4242,4243,4247,4251,4253,4255],{"class":3091,"line":3092},[3089,4244,4246],{"class":4245},"sCDza","using",[3089,4248,4250],{"class":4249},"sN1BT"," HandyControl",[3089,4252,3454],{"class":3099},[3089,4254,2560],{"class":4249},[3089,4256,4257],{"class":3099},";\n",[3089,4259,4260],{"class":3091,"line":3196},[3089,4261,4263],{"emptyLinePlaceholder":4262},true,"\n",[3089,4265,4266,4270,4273,4276,4279,4282],{"class":3091,"line":3207},[3089,4267,4269],{"class":4268},"su1O8","public",[3089,4271,4272],{"class":4268}," partial",[3089,4274,4275],{"class":4268}," class",[3089,4277,4278],{"class":4249}," App",[3089,4280,4281],{"class":3099}," : ",[3089,4283,4284],{"class":4249},"Application\n",[3089,4286,4287],{"class":3091,"line":3218},[3089,4288,4289],{"class":3099},"{\n",[3089,4291,4292,4295,4298,4301,4304,4307,4310,4314],{"class":3091,"line":3229},[3089,4293,4294],{"class":4268},"    protected",[3089,4296,4297],{"class":4268}," override",[3089,4299,4300],{"class":4268}," void",[3089,4302,4303],{"class":3095}," OnStartup",[3089,4305,4306],{"class":3099},"(",[3089,4308,4309],{"class":4249},"StartupEventArgs",[3089,4311,4313],{"class":4312},"siwwj"," e",[3089,4315,4316],{"class":3099},")\n",[3089,4318,4319],{"class":3091,"line":3243},[3089,4320,4321],{"class":3099},"    {\n",[3089,4323,4324,4327,4329,4332,4334,4337],{"class":3091,"line":3254},[3089,4325,4326],{"class":4268},"        base",[3089,4328,3454],{"class":3099},[3089,4330,4331],{"class":3095},"OnStartup",[3089,4333,4306],{"class":3099},[3089,4335,4336],{"class":4312},"e",[3089,4338,4339],{"class":3099},");\n",[3089,4341,4342],{"class":3091,"line":3265},[3089,4343,3875],{"class":3099},[3089,4345,4346],{"class":3091,"line":3276},[3089,4347,4348],{"class":3279},"        // Встановлення англійської мови\n",[3089,4350,4351,4354,4356,4359,4361,4364,4366,4369],{"class":3091,"line":3283},[3089,4352,4353],{"class":4312},"        ConfigHelper",[3089,4355,3454],{"class":3099},[3089,4357,4358],{"class":4312},"Instance",[3089,4360,3454],{"class":3099},[3089,4362,4363],{"class":3095},"SetLang",[3089,4365,4306],{"class":3099},[3089,4367,4368],{"class":3118},"\"en\"",[3089,4370,4339],{"class":3099},[3089,4372,4373],{"class":3091,"line":3295},[3089,4374,3875],{"class":3099},[3089,4376,4377],{"class":3091,"line":3301},[3089,4378,4379],{"class":3279},"        // Або китайської\n",[3089,4381,4382],{"class":3091,"line":3311},[3089,4383,4384],{"class":3279},"        // ConfigHelper.Instance.SetLang(\"zh-cn\");\n",[3089,4386,4387],{"class":3091,"line":3321},[3089,4388,4389],{"class":3099},"    }\n",[3089,4391,4392],{"class":3091,"line":3331},[3089,4393,4394],{"class":3099},"}\n",[2964,4396,4397],{},"На жаль, HandyControl не має вбудованої підтримки української мови, але ви можете створити власні ресурси локалізації для вашого додатку, використовуючи стандартні механізми WPF.",[2959,4399,4401],{"id":4400},"система-тем-та-стилізація","Система тем та стилізація",[3000,4403,4405],{"id":4404},"вбудовані-теми","Вбудовані теми",[2964,4407,4408],{},"HandyControl надає три основні теми з коробки: Default (синя), Violet (фіолетова), та Dark (темна). Кожна тема включає повний набір кольорів для всіх контролів, забезпечуючи консистентний вигляд додатку.",[2964,4410,4411,4414],{},[2983,4412,4413],{},"Default тема"," використовує синій accent color (#1E90FF) і світлий фон. Це стандартна тема, яка завантажується за замовчуванням і підходить для більшості бізнес-додатків.",[2964,4416,4417,4420],{},[2983,4418,4419],{},"Violet тема"," використовує фіолетовий accent color (#9B59B6) і також має світлий фон. Ця тема підходить для креативних додатків або коли потрібно виділитися серед стандартних синіх інтерфейсів.",[2964,4422,4423,4426],{},[2983,4424,4425],{},"Dark тема"," використовує темний фон (#252526) з білим текстом та синім accent color. Темна тема зменшує навантаження на очі при роботі в умовах низького освітлення та популярна серед розробників.",[2964,4428,4429,4430,3165],{},"Для програмного перемикання теми використовується клас ",[3086,4431,4432],{},"ThemeManager",[3079,4434,4436],{"className":4236,"code":4435,"language":4238,"meta":3084,"style":3084},"using HandyControl.Themes;\nusing HandyControl.Tools;\n\n// Перемикання на темну тему\nThemeManager.Current.ApplicationTheme = ApplicationTheme.Dark;\n\n// Перемикання на світлу тему\nThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;\n\n// Зміна accent color\nThemeManager.Current.AccentColor = Colors.Purple;\n",[3086,4437,4438,4451,4463,4467,4472,4497,4501,4506,4528,4532,4537],{"__ignoreMap":3084},[3089,4439,4440,4442,4444,4446,4449],{"class":3091,"line":3092},[3089,4441,4246],{"class":4245},[3089,4443,4250],{"class":4249},[3089,4445,3454],{"class":3099},[3089,4447,4448],{"class":4249},"Themes",[3089,4450,4257],{"class":3099},[3089,4452,4453,4455,4457,4459,4461],{"class":3091,"line":3196},[3089,4454,4246],{"class":4245},[3089,4456,4250],{"class":4249},[3089,4458,3454],{"class":3099},[3089,4460,2560],{"class":4249},[3089,4462,4257],{"class":3099},[3089,4464,4465],{"class":3091,"line":3207},[3089,4466,4263],{"emptyLinePlaceholder":4262},[3089,4468,4469],{"class":3091,"line":3218},[3089,4470,4471],{"class":3279},"// Перемикання на темну тему\n",[3089,4473,4474,4476,4478,4481,4483,4486,4489,4491,4493,4495],{"class":3091,"line":3229},[3089,4475,4432],{"class":4312},[3089,4477,3454],{"class":3099},[3089,4479,4480],{"class":4312},"Current",[3089,4482,3454],{"class":3099},[3089,4484,4485],{"class":4312},"ApplicationTheme",[3089,4487,4488],{"class":3099}," = ",[3089,4490,4485],{"class":4312},[3089,4492,3454],{"class":3099},[3089,4494,3453],{"class":4312},[3089,4496,4257],{"class":3099},[3089,4498,4499],{"class":3091,"line":3243},[3089,4500,4263],{"emptyLinePlaceholder":4262},[3089,4502,4503],{"class":3091,"line":3254},[3089,4504,4505],{"class":3279},"// Перемикання на світлу тему\n",[3089,4507,4508,4510,4512,4514,4516,4518,4520,4522,4524,4526],{"class":3091,"line":3265},[3089,4509,4432],{"class":4312},[3089,4511,3454],{"class":3099},[3089,4513,4480],{"class":4312},[3089,4515,3454],{"class":3099},[3089,4517,4485],{"class":4312},[3089,4519,4488],{"class":3099},[3089,4521,4485],{"class":4312},[3089,4523,3454],{"class":3099},[3089,4525,3449],{"class":4312},[3089,4527,4257],{"class":3099},[3089,4529,4530],{"class":3091,"line":3276},[3089,4531,4263],{"emptyLinePlaceholder":4262},[3089,4533,4534],{"class":3091,"line":3283},[3089,4535,4536],{"class":3279},"// Зміна accent color\n",[3089,4538,4539,4541,4543,4545,4547,4550,4552,4555,4557,4560],{"class":3091,"line":3295},[3089,4540,4432],{"class":4312},[3089,4542,3454],{"class":3099},[3089,4544,4480],{"class":4312},[3089,4546,3454],{"class":3099},[3089,4548,4549],{"class":4312},"AccentColor",[3089,4551,4488],{"class":3099},[3089,4553,4554],{"class":4312},"Colors",[3089,4556,3454],{"class":3099},[3089,4558,4559],{"class":4312},"Purple",[3089,4561,4257],{"class":3099},[2964,4563,4564],{},"Приклад вікна з перемикачем теми:",[3079,4566,4568],{"className":3168,"code":4567,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"ThemeDemo.MainWindow\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\">\n    \u003CGrid>\n        \u003CStackPanel Margin=\"20\">\n            \u003CTextBlock Text=\"Налаштування теми\" \n                       FontSize=\"20\" \n                       FontWeight=\"Bold\"\n                       Margin=\"0,0,0,20\"/>\n            \n            \u003Chc:ComboBox hc:InfoElement.Title=\"Виберіть тему\"\n                         SelectionChanged=\"ThemeComboBox_SelectionChanged\"\n                         SelectedIndex=\"0\">\n                \u003CComboBoxItem Content=\"Світла\"/>\n                \u003CComboBoxItem Content=\"Темна\"/>\n            \u003C/hc:ComboBox>\n        \u003C/StackPanel>\n    \u003C/Grid>\n\u003C/hc:Window>\n",[3086,4569,4570,4583,4594,4602,4616,4631,4641,4649,4659,4663,4677,4687,4698,4714,4729,4737,4745,4753],{"__ignoreMap":3084},[3089,4571,4572,4574,4576,4578,4580],{"class":3091,"line":3092},[3089,4573,3178],{"class":3177},[3089,4575,3479],{"class":3181},[3089,4577,3186],{"class":3185},[3089,4579,3189],{"class":3099},[3089,4581,4582],{"class":3192},"\"ThemeDemo.MainWindow\"\n",[3089,4584,4585,4587,4589,4592],{"class":3091,"line":3196},[3089,4586,3509],{"class":3185},[3089,4588,3189],{"class":3099},[3089,4590,4591],{"class":3192},"\"https://handyorg.github.io/handycontrol\"",[3089,4593,3240],{"class":3177},[3089,4595,4596,4598,4600],{"class":3091,"line":3207},[3089,4597,3246],{"class":3177},[3089,4599,3557],{"class":3181},[3089,4601,3240],{"class":3177},[3089,4603,4604,4606,4608,4610,4612,4614],{"class":3091,"line":3218},[3089,4605,3257],{"class":3177},[3089,4607,3574],{"class":3181},[3089,4609,3560],{"class":3185},[3089,4611,3189],{"class":3099},[3089,4613,3565],{"class":3192},[3089,4615,3240],{"class":3177},[3089,4617,4618,4620,4622,4624,4626,4629],{"class":3091,"line":3229},[3089,4619,3268],{"class":3177},[3089,4621,3583],{"class":3181},[3089,4623,3586],{"class":3185},[3089,4625,3189],{"class":3099},[3089,4627,4628],{"class":3192},"\"Налаштування теми\"",[3089,4630,3526],{"class":3099},[3089,4632,4633,4635,4637,4639],{"class":3091,"line":3243},[3089,4634,3598],{"class":3185},[3089,4636,3189],{"class":3099},[3089,4638,3565],{"class":3192},[3089,4640,3526],{"class":3099},[3089,4642,4643,4645,4647],{"class":3091,"line":3254},[3089,4644,3610],{"class":3185},[3089,4646,3189],{"class":3099},[3089,4648,3615],{"class":3192},[3089,4650,4651,4653,4655,4657],{"class":3091,"line":3265},[3089,4652,3620],{"class":3185},[3089,4654,3189],{"class":3099},[3089,4656,3625],{"class":3192},[3089,4658,3292],{"class":3177},[3089,4660,4661],{"class":3091,"line":3276},[3089,4662,3632],{"class":3099},[3089,4664,4665,4667,4670,4672,4674],{"class":3091,"line":3283},[3089,4666,3268],{"class":3177},[3089,4668,4669],{"class":3181},"hc:ComboBox",[3089,4671,3642],{"class":3185},[3089,4673,3189],{"class":3099},[3089,4675,4676],{"class":3192},"\"Виберіть тему\"\n",[3089,4678,4679,4682,4684],{"class":3091,"line":3295},[3089,4680,4681],{"class":3185},"                         SelectionChanged",[3089,4683,3189],{"class":3099},[3089,4685,4686],{"class":3192},"\"ThemeComboBox_SelectionChanged\"\n",[3089,4688,4689,4692,4694,4696],{"class":3091,"line":3301},[3089,4690,4691],{"class":3185},"                         SelectedIndex",[3089,4693,3189],{"class":3099},[3089,4695,3981],{"class":3192},[3089,4697,3240],{"class":3177},[3089,4699,4700,4702,4705,4707,4709,4712],{"class":3091,"line":3311},[3089,4701,3286],{"class":3177},[3089,4703,4704],{"class":3181},"ComboBoxItem",[3089,4706,3729],{"class":3185},[3089,4708,3189],{"class":3099},[3089,4710,4711],{"class":3192},"\"Світла\"",[3089,4713,3292],{"class":3177},[3089,4715,4716,4718,4720,4722,4724,4727],{"class":3091,"line":3321},[3089,4717,3286],{"class":3177},[3089,4719,4704],{"class":3181},[3089,4721,3729],{"class":3185},[3089,4723,3189],{"class":3099},[3089,4725,4726],{"class":3192},"\"Темна\"",[3089,4728,3292],{"class":3177},[3089,4730,4731,4733,4735],{"class":3091,"line":3331},[3089,4732,3314],{"class":3177},[3089,4734,4669],{"class":3181},[3089,4736,3240],{"class":3177},[3089,4738,4739,4741,4743],{"class":3091,"line":3341},[3089,4740,3324],{"class":3177},[3089,4742,3574],{"class":3181},[3089,4744,3240],{"class":3177},[3089,4746,4747,4749,4751],{"class":3091,"line":3660},[3089,4748,3334],{"class":3177},[3089,4750,3557],{"class":3181},[3089,4752,3240],{"class":3177},[3089,4754,4755,4757,4759],{"class":3091,"line":3673},[3089,4756,3344],{"class":3177},[3089,4758,3479],{"class":3181},[3089,4760,3240],{"class":3177},[2964,4762,4763],{},"Code-behind для перемикання:",[3079,4765,4767],{"className":4236,"code":4766,"language":4238,"meta":3084,"style":3084},"private void ThemeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n{\n    var comboBox = sender as ComboBox;\n    if (comboBox?.SelectedIndex == 0)\n    {\n        ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;\n    }\n    else\n    {\n        ThemeManager.Current.ApplicationTheme = ApplicationTheme.Dark;\n    }\n}\n",[3086,4768,4769,4797,4801,4822,4848,4852,4875,4879,4884,4888,4910,4914],{"__ignoreMap":3084},[3089,4770,4771,4774,4776,4779,4781,4784,4787,4790,4793,4795],{"class":3091,"line":3092},[3089,4772,4773],{"class":4268},"private",[3089,4775,4300],{"class":4268},[3089,4777,4778],{"class":3095}," ThemeComboBox_SelectionChanged",[3089,4780,4306],{"class":3099},[3089,4782,4783],{"class":4268},"object",[3089,4785,4786],{"class":4312}," sender",[3089,4788,4789],{"class":3099},", ",[3089,4791,4792],{"class":4249},"SelectionChangedEventArgs",[3089,4794,4313],{"class":4312},[3089,4796,4316],{"class":3099},[3089,4798,4799],{"class":3091,"line":3196},[3089,4800,4289],{"class":3099},[3089,4802,4803,4806,4809,4811,4814,4817,4820],{"class":3091,"line":3207},[3089,4804,4805],{"class":4268},"    var",[3089,4807,4808],{"class":4312}," comboBox",[3089,4810,4488],{"class":3099},[3089,4812,4813],{"class":4312},"sender",[3089,4815,4816],{"class":4268}," as",[3089,4818,4819],{"class":4249}," ComboBox",[3089,4821,4257],{"class":3099},[3089,4823,4824,4827,4830,4833,4836,4839,4842,4846],{"class":3091,"line":3218},[3089,4825,4826],{"class":4245},"    if",[3089,4828,4829],{"class":3099}," (",[3089,4831,4832],{"class":4312},"comboBox",[3089,4834,4835],{"class":3099},"?.",[3089,4837,4838],{"class":4312},"SelectedIndex",[3089,4840,4841],{"class":3099}," == ",[3089,4843,4845],{"class":4844},"sJj4R","0",[3089,4847,4316],{"class":3099},[3089,4849,4850],{"class":3091,"line":3229},[3089,4851,4321],{"class":3099},[3089,4853,4854,4857,4859,4861,4863,4865,4867,4869,4871,4873],{"class":3091,"line":3243},[3089,4855,4856],{"class":4312},"        ThemeManager",[3089,4858,3454],{"class":3099},[3089,4860,4480],{"class":4312},[3089,4862,3454],{"class":3099},[3089,4864,4485],{"class":4312},[3089,4866,4488],{"class":3099},[3089,4868,4485],{"class":4312},[3089,4870,3454],{"class":3099},[3089,4872,3449],{"class":4312},[3089,4874,4257],{"class":3099},[3089,4876,4877],{"class":3091,"line":3254},[3089,4878,4389],{"class":3099},[3089,4880,4881],{"class":3091,"line":3265},[3089,4882,4883],{"class":4245},"    else\n",[3089,4885,4886],{"class":3091,"line":3276},[3089,4887,4321],{"class":3099},[3089,4889,4890,4892,4894,4896,4898,4900,4902,4904,4906,4908],{"class":3091,"line":3283},[3089,4891,4856],{"class":4312},[3089,4893,3454],{"class":3099},[3089,4895,4480],{"class":4312},[3089,4897,3454],{"class":3099},[3089,4899,4485],{"class":4312},[3089,4901,4488],{"class":3099},[3089,4903,4485],{"class":4312},[3089,4905,3454],{"class":3099},[3089,4907,3453],{"class":4312},[3089,4909,4257],{"class":3099},[3089,4911,4912],{"class":3091,"line":3295},[3089,4913,4389],{"class":3099},[3089,4915,4916],{"class":3091,"line":3301},[3089,4917,4394],{"class":3099},[3000,4919,4921],{"id":4920},"створення-власної-теми","Створення власної теми",[2964,4923,4924],{},"HandyControl дозволяє створювати власні теми шляхом перевизначення кольорів у ResourceDictionary. Система тем базується на наборі ключових кольорів, які використовуються всіма контролами.",[2964,4926,4927],{},"Основні кольори теми:",[3008,4929,4930,4936,4942,4948,4954,4960,4966,4972,4978],{},[3011,4931,4932,4935],{},[2983,4933,4934],{},"PrimaryBrush"," — основний accent color (кнопки, посилання, активні елементи)",[3011,4937,4938,4941],{},[2983,4939,4940],{},"DangerBrush"," — колір для небезпечних дій (видалення, помилки)",[3011,4943,4944,4947],{},[2983,4945,4946],{},"WarningBrush"," — колір для попереджень",[3011,4949,4950,4953],{},[2983,4951,4952],{},"InfoBrush"," — колір для інформаційних повідомлень",[3011,4955,4956,4959],{},[2983,4957,4958],{},"SuccessBrush"," — колір для успішних операцій",[3011,4961,4962,4965],{},[2983,4963,4964],{},"BackgroundBrush"," — фон додатку",[3011,4967,4968,4971],{},[2983,4969,4970],{},"RegionBrush"," — фон контейнерів та панелей",[3011,4973,4974,4977],{},[2983,4975,4976],{},"BorderBrush"," — колір рамок",[3011,4979,4980,4983],{},[2983,4981,4982],{},"TextIconBrush"," — колір тексту та іконок",[2964,4985,4986,4987,3165],{},"Створення власної теми в окремому файлі ",[3086,4988,4989],{},"CustomTheme.xaml",[3079,4991,4993],{"className":3168,"code":4992,"language":3170,"meta":3084,"style":3084},"\u003CResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n    \n    \u003C!-- Власний accent color (помаранчевий) -->\n    \u003CColor x:Key=\"PrimaryColor\">#FF6B35\u003C/Color>\n    \u003CSolidColorBrush x:Key=\"PrimaryBrush\" Color=\"{StaticResource PrimaryColor}\"/>\n    \n    \u003C!-- Темніший відтінок для hover -->\n    \u003CColor x:Key=\"PrimaryDarkColor\">#E55A2B\u003C/Color>\n    \u003CSolidColorBrush x:Key=\"PrimaryDarkBrush\" Color=\"{StaticResource PrimaryDarkColor}\"/>\n    \n    \u003C!-- Світліший відтінок для фону -->\n    \u003CColor x:Key=\"PrimaryLightColor\">#FFE5D9\u003C/Color>\n    \u003CSolidColorBrush x:Key=\"PrimaryLightBrush\" Color=\"{StaticResource PrimaryLightColor}\"/>\n    \n    \u003C!-- Інші кольори за потребою -->\n    \u003CColor x:Key=\"DangerColor\">#E74C3C\u003C/Color>\n    \u003CSolidColorBrush x:Key=\"DangerBrush\" Color=\"{StaticResource DangerColor}\"/>\n    \n    \u003CColor x:Key=\"SuccessColor\">#27AE60\u003C/Color>\n    \u003CSolidColorBrush x:Key=\"SuccessBrush\" Color=\"{StaticResource SuccessColor}\"/>\n    \n\u003C/ResourceDictionary>\n",[3086,4994,4995,5008,5020,5025,5030,5057,5081,5085,5090,5114,5136,5140,5145,5169,5191,5195,5200,5224,5246,5250,5274,5296,5300],{"__ignoreMap":3084},[3089,4996,4997,4999,5001,5004,5006],{"class":3091,"line":3092},[3089,4998,3178],{"class":3177},[3089,5000,3260],{"class":3181},[3089,5002,5003],{"class":3185}," xmlns",[3089,5005,3189],{"class":3099},[3089,5007,3204],{"class":3192},[3089,5009,5010,5013,5015,5018],{"class":3091,"line":3196},[3089,5011,5012],{"class":3185},"                    xmlns:x",[3089,5014,3189],{"class":3099},[3089,5016,5017],{"class":3192},"\"http://schemas.microsoft.com/winfx/2006/xaml\"",[3089,5019,3240],{"class":3177},[3089,5021,5022],{"class":3091,"line":3207},[3089,5023,5024],{"class":3099},"    \n",[3089,5026,5027],{"class":3091,"line":3218},[3089,5028,5029],{"class":3279},"    \u003C!-- Власний accent color (помаранчевий) -->\n",[3089,5031,5032,5034,5037,5040,5042,5045,5048,5051,5053,5055],{"class":3091,"line":3229},[3089,5033,3246],{"class":3177},[3089,5035,5036],{"class":3181},"Color",[3089,5038,5039],{"class":3185}," x:Key",[3089,5041,3189],{"class":3099},[3089,5043,5044],{"class":3192},"\"PrimaryColor\"",[3089,5046,5047],{"class":3177},">",[3089,5049,5050],{"class":3099},"#FF6B35",[3089,5052,3344],{"class":3177},[3089,5054,5036],{"class":3181},[3089,5056,3240],{"class":3177},[3089,5058,5059,5061,5064,5066,5068,5071,5074,5076,5079],{"class":3091,"line":3243},[3089,5060,3246],{"class":3177},[3089,5062,5063],{"class":3181},"SolidColorBrush",[3089,5065,5039],{"class":3185},[3089,5067,3189],{"class":3099},[3089,5069,5070],{"class":3192},"\"PrimaryBrush\"",[3089,5072,5073],{"class":3185}," Color",[3089,5075,3189],{"class":3099},[3089,5077,5078],{"class":3192},"\"{StaticResource PrimaryColor}\"",[3089,5080,3292],{"class":3177},[3089,5082,5083],{"class":3091,"line":3254},[3089,5084,5024],{"class":3099},[3089,5086,5087],{"class":3091,"line":3265},[3089,5088,5089],{"class":3279},"    \u003C!-- Темніший відтінок для hover -->\n",[3089,5091,5092,5094,5096,5098,5100,5103,5105,5108,5110,5112],{"class":3091,"line":3276},[3089,5093,3246],{"class":3177},[3089,5095,5036],{"class":3181},[3089,5097,5039],{"class":3185},[3089,5099,3189],{"class":3099},[3089,5101,5102],{"class":3192},"\"PrimaryDarkColor\"",[3089,5104,5047],{"class":3177},[3089,5106,5107],{"class":3099},"#E55A2B",[3089,5109,3344],{"class":3177},[3089,5111,5036],{"class":3181},[3089,5113,3240],{"class":3177},[3089,5115,5116,5118,5120,5122,5124,5127,5129,5131,5134],{"class":3091,"line":3283},[3089,5117,3246],{"class":3177},[3089,5119,5063],{"class":3181},[3089,5121,5039],{"class":3185},[3089,5123,3189],{"class":3099},[3089,5125,5126],{"class":3192},"\"PrimaryDarkBrush\"",[3089,5128,5073],{"class":3185},[3089,5130,3189],{"class":3099},[3089,5132,5133],{"class":3192},"\"{StaticResource PrimaryDarkColor}\"",[3089,5135,3292],{"class":3177},[3089,5137,5138],{"class":3091,"line":3295},[3089,5139,5024],{"class":3099},[3089,5141,5142],{"class":3091,"line":3301},[3089,5143,5144],{"class":3279},"    \u003C!-- Світліший відтінок для фону -->\n",[3089,5146,5147,5149,5151,5153,5155,5158,5160,5163,5165,5167],{"class":3091,"line":3311},[3089,5148,3246],{"class":3177},[3089,5150,5036],{"class":3181},[3089,5152,5039],{"class":3185},[3089,5154,3189],{"class":3099},[3089,5156,5157],{"class":3192},"\"PrimaryLightColor\"",[3089,5159,5047],{"class":3177},[3089,5161,5162],{"class":3099},"#FFE5D9",[3089,5164,3344],{"class":3177},[3089,5166,5036],{"class":3181},[3089,5168,3240],{"class":3177},[3089,5170,5171,5173,5175,5177,5179,5182,5184,5186,5189],{"class":3091,"line":3321},[3089,5172,3246],{"class":3177},[3089,5174,5063],{"class":3181},[3089,5176,5039],{"class":3185},[3089,5178,3189],{"class":3099},[3089,5180,5181],{"class":3192},"\"PrimaryLightBrush\"",[3089,5183,5073],{"class":3185},[3089,5185,3189],{"class":3099},[3089,5187,5188],{"class":3192},"\"{StaticResource PrimaryLightColor}\"",[3089,5190,3292],{"class":3177},[3089,5192,5193],{"class":3091,"line":3331},[3089,5194,5024],{"class":3099},[3089,5196,5197],{"class":3091,"line":3341},[3089,5198,5199],{"class":3279},"    \u003C!-- Інші кольори за потребою -->\n",[3089,5201,5202,5204,5206,5208,5210,5213,5215,5218,5220,5222],{"class":3091,"line":3660},[3089,5203,3246],{"class":3177},[3089,5205,5036],{"class":3181},[3089,5207,5039],{"class":3185},[3089,5209,3189],{"class":3099},[3089,5211,5212],{"class":3192},"\"DangerColor\"",[3089,5214,5047],{"class":3177},[3089,5216,5217],{"class":3099},"#E74C3C",[3089,5219,3344],{"class":3177},[3089,5221,5036],{"class":3181},[3089,5223,3240],{"class":3177},[3089,5225,5226,5228,5230,5232,5234,5237,5239,5241,5244],{"class":3091,"line":3673},[3089,5227,3246],{"class":3177},[3089,5229,5063],{"class":3181},[3089,5231,5039],{"class":3185},[3089,5233,3189],{"class":3099},[3089,5235,5236],{"class":3192},"\"DangerBrush\"",[3089,5238,5073],{"class":3185},[3089,5240,3189],{"class":3099},[3089,5242,5243],{"class":3192},"\"{StaticResource DangerColor}\"",[3089,5245,3292],{"class":3177},[3089,5247,5248],{"class":3091,"line":3678},[3089,5249,5024],{"class":3099},[3089,5251,5252,5254,5256,5258,5260,5263,5265,5268,5270,5272],{"class":3091,"line":3693},[3089,5253,3246],{"class":3177},[3089,5255,5036],{"class":3181},[3089,5257,5039],{"class":3185},[3089,5259,3189],{"class":3099},[3089,5261,5262],{"class":3192},"\"SuccessColor\"",[3089,5264,5047],{"class":3177},[3089,5266,5267],{"class":3099},"#27AE60",[3089,5269,3344],{"class":3177},[3089,5271,5036],{"class":3181},[3089,5273,3240],{"class":3177},[3089,5275,5276,5278,5280,5282,5284,5287,5289,5291,5294],{"class":3091,"line":3704},[3089,5277,3246],{"class":3177},[3089,5279,5063],{"class":3181},[3089,5281,5039],{"class":3185},[3089,5283,3189],{"class":3099},[3089,5285,5286],{"class":3192},"\"SuccessBrush\"",[3089,5288,5073],{"class":3185},[3089,5290,3189],{"class":3099},[3089,5292,5293],{"class":3192},"\"{StaticResource SuccessColor}\"",[3089,5295,3292],{"class":3177},[3089,5297,5298],{"class":3091,"line":3716},[3089,5299,5024],{"class":3099},[3089,5301,5302,5304,5306],{"class":3091,"line":3721},[3089,5303,3344],{"class":3177},[3089,5305,3260],{"class":3181},[3089,5307,3240],{"class":3177},[2964,5309,5310,5311,3165],{},"Підключення власної теми в ",[3086,5312,3158],{},[3079,5314,5316],{"className":3168,"code":5315,"language":3170,"meta":3084,"style":3084},"\u003CApplication.Resources>\n    \u003CResourceDictionary>\n        \u003CResourceDictionary.MergedDictionaries>\n            \u003Chc:ThemeResources/>\n            \u003Chc:Theme/>\n            \u003C!-- Власна тема перевизначає кольори -->\n            \u003CResourceDictionary Source=\"Themes/CustomTheme.xaml\"/>\n        \u003C/ResourceDictionary.MergedDictionaries>\n    \u003C/ResourceDictionary>\n\u003C/Application.Resources>\n",[3086,5317,5318,5326,5334,5342,5350,5358,5363,5379,5387,5395],{"__ignoreMap":3084},[3089,5319,5320,5322,5324],{"class":3091,"line":3092},[3089,5321,3178],{"class":3177},[3089,5323,3249],{"class":3181},[3089,5325,3240],{"class":3177},[3089,5327,5328,5330,5332],{"class":3091,"line":3196},[3089,5329,3246],{"class":3177},[3089,5331,3260],{"class":3181},[3089,5333,3240],{"class":3177},[3089,5335,5336,5338,5340],{"class":3091,"line":3207},[3089,5337,3257],{"class":3177},[3089,5339,3271],{"class":3181},[3089,5341,3240],{"class":3177},[3089,5343,5344,5346,5348],{"class":3091,"line":3218},[3089,5345,3268],{"class":3177},[3089,5347,3289],{"class":3181},[3089,5349,3292],{"class":3177},[3089,5351,5352,5354,5356],{"class":3091,"line":3229},[3089,5353,3268],{"class":3177},[3089,5355,3306],{"class":3181},[3089,5357,3292],{"class":3177},[3089,5359,5360],{"class":3091,"line":3243},[3089,5361,5362],{"class":3279},"            \u003C!-- Власна тема перевизначає кольори -->\n",[3089,5364,5365,5367,5369,5372,5374,5377],{"class":3091,"line":3254},[3089,5366,3268],{"class":3177},[3089,5368,3260],{"class":3181},[3089,5370,5371],{"class":3185}," Source",[3089,5373,3189],{"class":3099},[3089,5375,5376],{"class":3192},"\"Themes/CustomTheme.xaml\"",[3089,5378,3292],{"class":3177},[3089,5380,5381,5383,5385],{"class":3091,"line":3265},[3089,5382,3324],{"class":3177},[3089,5384,3271],{"class":3181},[3089,5386,3240],{"class":3177},[3089,5388,5389,5391,5393],{"class":3091,"line":3276},[3089,5390,3334],{"class":3177},[3089,5392,3260],{"class":3181},[3089,5394,3240],{"class":3177},[3089,5396,5397,5399,5401],{"class":3091,"line":3283},[3089,5398,3344],{"class":3177},[3089,5400,3249],{"class":3181},[3089,5402,3240],{"class":3177},[5404,5405,5407,5408,5410],"warning",{"title":5406},"Порядок завантаження важливий","Власна тема повинна завантажуватися ПІСЛЯ ",[3086,5409,3306],{},", щоб перевизначити стандартні кольори. Якщо завантажити її раніше, HandyControl перезапише ваші кольори своїми стандартними значеннями.",[3000,5412,5414],{"id":5413},"динамічна-зміна-теми","Динамічна зміна теми",[2964,5416,5417,5418,5421],{},"Для збереження вибору користувача між сесіями можна використовувати ",[3086,5419,5420],{},"ConfigHelper"," від HandyControl або стандартні Settings WPF.",[2964,5423,5424],{},"Приклад збереження теми в Settings:",[3079,5426,5428],{"className":4236,"code":5427,"language":4238,"meta":3084,"style":3084},"// Properties/Settings.settings\n// Додайте налаштування: Name=\"Theme\", Type=\"string\", Scope=\"User\", Value=\"Light\"\n\npublic partial class App : Application\n{\n    protected override void OnStartup(StartupEventArgs e)\n    {\n        base.OnStartup(e);\n        \n        // Завантаження збереженої теми\n        var savedTheme = Properties.Settings.Default.Theme;\n        if (savedTheme == \"Dark\")\n        {\n            ThemeManager.Current.ApplicationTheme = ApplicationTheme.Dark;\n        }\n        else\n        {\n            ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;\n        }\n    }\n    \n    protected override void OnExit(ExitEventArgs e)\n    {\n        // Збереження поточної теми\n        Properties.Settings.Default.Theme = \n            ThemeManager.Current.ApplicationTheme == ApplicationTheme.Dark ? \"Dark\" : \"Light\";\n        Properties.Settings.Default.Save();\n        \n        base.OnExit(e);\n    }\n}\n",[3086,5429,5430,5435,5440,5444,5458,5462,5480,5484,5498,5502,5507,5536,5552,5557,5580,5585,5590,5594,5616,5620,5624,5628,5648,5652,5657,5677,5709,5729,5733,5748,5753],{"__ignoreMap":3084},[3089,5431,5432],{"class":3091,"line":3092},[3089,5433,5434],{"class":3279},"// Properties/Settings.settings\n",[3089,5436,5437],{"class":3091,"line":3196},[3089,5438,5439],{"class":3279},"// Додайте налаштування: Name=\"Theme\", Type=\"string\", Scope=\"User\", Value=\"Light\"\n",[3089,5441,5442],{"class":3091,"line":3207},[3089,5443,4263],{"emptyLinePlaceholder":4262},[3089,5445,5446,5448,5450,5452,5454,5456],{"class":3091,"line":3218},[3089,5447,4269],{"class":4268},[3089,5449,4272],{"class":4268},[3089,5451,4275],{"class":4268},[3089,5453,4278],{"class":4249},[3089,5455,4281],{"class":3099},[3089,5457,4284],{"class":4249},[3089,5459,5460],{"class":3091,"line":3229},[3089,5461,4289],{"class":3099},[3089,5463,5464,5466,5468,5470,5472,5474,5476,5478],{"class":3091,"line":3243},[3089,5465,4294],{"class":4268},[3089,5467,4297],{"class":4268},[3089,5469,4300],{"class":4268},[3089,5471,4303],{"class":3095},[3089,5473,4306],{"class":3099},[3089,5475,4309],{"class":4249},[3089,5477,4313],{"class":4312},[3089,5479,4316],{"class":3099},[3089,5481,5482],{"class":3091,"line":3254},[3089,5483,4321],{"class":3099},[3089,5485,5486,5488,5490,5492,5494,5496],{"class":3091,"line":3265},[3089,5487,4326],{"class":4268},[3089,5489,3454],{"class":3099},[3089,5491,4331],{"class":3095},[3089,5493,4306],{"class":3099},[3089,5495,4336],{"class":4312},[3089,5497,4339],{"class":3099},[3089,5499,5500],{"class":3091,"line":3276},[3089,5501,3875],{"class":3099},[3089,5503,5504],{"class":3091,"line":3283},[3089,5505,5506],{"class":3279},"        // Завантаження збереженої теми\n",[3089,5508,5509,5512,5515,5517,5520,5522,5525,5527,5530,5532,5534],{"class":3091,"line":3295},[3089,5510,5511],{"class":4268},"        var",[3089,5513,5514],{"class":4312}," savedTheme",[3089,5516,4488],{"class":3099},[3089,5518,5519],{"class":4312},"Properties",[3089,5521,3454],{"class":3099},[3089,5523,5524],{"class":4312},"Settings",[3089,5526,3454],{"class":3099},[3089,5528,5529],{"class":4312},"Default",[3089,5531,3454],{"class":3099},[3089,5533,3358],{"class":4312},[3089,5535,4257],{"class":3099},[3089,5537,5538,5541,5543,5546,5548,5550],{"class":3091,"line":3301},[3089,5539,5540],{"class":4245},"        if",[3089,5542,4829],{"class":3099},[3089,5544,5545],{"class":4312},"savedTheme",[3089,5547,4841],{"class":3099},[3089,5549,3405],{"class":3118},[3089,5551,4316],{"class":3099},[3089,5553,5554],{"class":3091,"line":3311},[3089,5555,5556],{"class":3099},"        {\n",[3089,5558,5559,5562,5564,5566,5568,5570,5572,5574,5576,5578],{"class":3091,"line":3321},[3089,5560,5561],{"class":4312},"            ThemeManager",[3089,5563,3454],{"class":3099},[3089,5565,4480],{"class":4312},[3089,5567,3454],{"class":3099},[3089,5569,4485],{"class":4312},[3089,5571,4488],{"class":3099},[3089,5573,4485],{"class":4312},[3089,5575,3454],{"class":3099},[3089,5577,3453],{"class":4312},[3089,5579,4257],{"class":3099},[3089,5581,5582],{"class":3091,"line":3331},[3089,5583,5584],{"class":3099},"        }\n",[3089,5586,5587],{"class":3091,"line":3341},[3089,5588,5589],{"class":4245},"        else\n",[3089,5591,5592],{"class":3091,"line":3660},[3089,5593,5556],{"class":3099},[3089,5595,5596,5598,5600,5602,5604,5606,5608,5610,5612,5614],{"class":3091,"line":3673},[3089,5597,5561],{"class":4312},[3089,5599,3454],{"class":3099},[3089,5601,4480],{"class":4312},[3089,5603,3454],{"class":3099},[3089,5605,4485],{"class":4312},[3089,5607,4488],{"class":3099},[3089,5609,4485],{"class":4312},[3089,5611,3454],{"class":3099},[3089,5613,3449],{"class":4312},[3089,5615,4257],{"class":3099},[3089,5617,5618],{"class":3091,"line":3678},[3089,5619,5584],{"class":3099},[3089,5621,5622],{"class":3091,"line":3693},[3089,5623,4389],{"class":3099},[3089,5625,5626],{"class":3091,"line":3704},[3089,5627,5024],{"class":3099},[3089,5629,5630,5632,5634,5636,5639,5641,5644,5646],{"class":3091,"line":3716},[3089,5631,4294],{"class":4268},[3089,5633,4297],{"class":4268},[3089,5635,4300],{"class":4268},[3089,5637,5638],{"class":3095}," OnExit",[3089,5640,4306],{"class":3099},[3089,5642,5643],{"class":4249},"ExitEventArgs",[3089,5645,4313],{"class":4312},[3089,5647,4316],{"class":3099},[3089,5649,5650],{"class":3091,"line":3721},[3089,5651,4321],{"class":3099},[3089,5653,5654],{"class":3091,"line":3739},[3089,5655,5656],{"class":3279},"        // Збереження поточної теми\n",[3089,5658,5659,5662,5664,5666,5668,5670,5672,5674],{"class":3091,"line":3750},[3089,5660,5661],{"class":4312},"        Properties",[3089,5663,3454],{"class":3099},[3089,5665,5524],{"class":4312},[3089,5667,3454],{"class":3099},[3089,5669,5529],{"class":4312},[3089,5671,3454],{"class":3099},[3089,5673,3358],{"class":4312},[3089,5675,5676],{"class":3099}," = \n",[3089,5678,5679,5681,5683,5685,5687,5689,5691,5693,5695,5697,5700,5702,5704,5707],{"class":3091,"line":3763},[3089,5680,5561],{"class":4312},[3089,5682,3454],{"class":3099},[3089,5684,4480],{"class":4312},[3089,5686,3454],{"class":3099},[3089,5688,4485],{"class":4312},[3089,5690,4841],{"class":3099},[3089,5692,4485],{"class":4312},[3089,5694,3454],{"class":3099},[3089,5696,3453],{"class":4312},[3089,5698,5699],{"class":3099}," ? ",[3089,5701,3405],{"class":3118},[3089,5703,4281],{"class":3099},[3089,5705,5706],{"class":3118},"\"Light\"",[3089,5708,4257],{"class":3099},[3089,5710,5711,5713,5715,5717,5719,5721,5723,5726],{"class":3091,"line":3772},[3089,5712,5661],{"class":4312},[3089,5714,3454],{"class":3099},[3089,5716,5524],{"class":4312},[3089,5718,3454],{"class":3099},[3089,5720,5529],{"class":4312},[3089,5722,3454],{"class":3099},[3089,5724,5725],{"class":3095},"Save",[3089,5727,5728],{"class":3099},"();\n",[3089,5730,5731],{"class":3091,"line":3781},[3089,5732,3875],{"class":3099},[3089,5734,5735,5737,5739,5742,5744,5746],{"class":3091,"line":4190},[3089,5736,4326],{"class":4268},[3089,5738,3454],{"class":3099},[3089,5740,5741],{"class":3095},"OnExit",[3089,5743,4306],{"class":3099},[3089,5745,4336],{"class":4312},[3089,5747,4339],{"class":3099},[3089,5749,5751],{"class":3091,"line":5750},30,[3089,5752,4389],{"class":3099},[3089,5754,5756],{"class":3091,"line":5755},31,[3089,5757,4394],{"class":3099},[2964,5759,5760,5761,5763],{},"Альтернативно, HandyControl надає власний ",[3086,5762,5420],{}," для збереження налаштувань:",[3079,5765,5767],{"className":4236,"code":5766,"language":4238,"meta":3084,"style":3084},"using HandyControl.Tools;\n\n// Збереження теми\nConfigHelper.Instance.SetConfig(\"Theme\", \"Dark\");\n\n// Завантаження теми\nvar theme = ConfigHelper.Instance.GetConfig\u003Cstring>(\"Theme\", \"Light\");\n",[3086,5768,5769,5781,5785,5790,5814,5818,5823],{"__ignoreMap":3084},[3089,5770,5771,5773,5775,5777,5779],{"class":3091,"line":3092},[3089,5772,4246],{"class":4245},[3089,5774,4250],{"class":4249},[3089,5776,3454],{"class":3099},[3089,5778,2560],{"class":4249},[3089,5780,4257],{"class":3099},[3089,5782,5783],{"class":3091,"line":3196},[3089,5784,4263],{"emptyLinePlaceholder":4262},[3089,5786,5787],{"class":3091,"line":3207},[3089,5788,5789],{"class":3279},"// Збереження теми\n",[3089,5791,5792,5794,5796,5798,5800,5803,5805,5808,5810,5812],{"class":3091,"line":3218},[3089,5793,5420],{"class":4312},[3089,5795,3454],{"class":3099},[3089,5797,4358],{"class":4312},[3089,5799,3454],{"class":3099},[3089,5801,5802],{"class":3095},"SetConfig",[3089,5804,4306],{"class":3099},[3089,5806,5807],{"class":3118},"\"Theme\"",[3089,5809,4789],{"class":3099},[3089,5811,3405],{"class":3118},[3089,5813,4339],{"class":3099},[3089,5815,5816],{"class":3091,"line":3229},[3089,5817,4263],{"emptyLinePlaceholder":4262},[3089,5819,5820],{"class":3091,"line":3243},[3089,5821,5822],{"class":3279},"// Завантаження теми\n",[3089,5824,5825,5828,5831,5833,5835,5837,5839,5841,5844,5846,5849,5852,5854,5856,5858],{"class":3091,"line":3254},[3089,5826,5827],{"class":4268},"var",[3089,5829,5830],{"class":4312}," theme",[3089,5832,4488],{"class":3099},[3089,5834,5420],{"class":4312},[3089,5836,3454],{"class":3099},[3089,5838,4358],{"class":4312},[3089,5840,3454],{"class":3099},[3089,5842,5843],{"class":3095},"GetConfig",[3089,5845,3178],{"class":3099},[3089,5847,5848],{"class":4268},"string",[3089,5850,5851],{"class":3099},">(",[3089,5853,5807],{"class":3118},[3089,5855,4789],{"class":3099},[3089,5857,5706],{"class":3118},[3089,5859,4339],{"class":3099},[3000,5861,5863],{"id":5862},"skin-система","Skin система",[2964,5865,5866],{},"HandyControl також підтримує концепцію \"Skin\" — це розширена версія тем, яка може включати не тільки кольори, але й зміни в layout, розмірах, шрифтах, та інших аспектах UI.",[2964,5868,5869],{},"Skin — це ResourceDictionary, який може перевизначати будь-які ресурси HandyControl. На відміну від простої зміни кольорів, Skin може змінювати:",[3008,5871,5872,5875,5878,5881,5884],{},[3011,5873,5874],{},"Розміри контролів (висота кнопок, padding)",[3011,5876,5877],{},"Шрифти (FontFamily, FontSize)",[3011,5879,5880],{},"Форми (CornerRadius для заокруглених кутів)",[3011,5882,5883],{},"Анімації (тривалість, easing functions)",[3011,5885,5886],{},"Layout (margins, spacing)",[2964,5888,5889],{},"Приклад створення Skin з великими кнопками та заокругленими кутами:",[3079,5891,5893],{"className":3168,"code":5892,"language":3170,"meta":3084,"style":3084},"\u003CResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n    \n    \u003C!-- Збільшені розміри -->\n    \u003Csystem:Double x:Key=\"DefaultControlHeight\">40\u003C/system:Double>\n    \u003CThickness x:Key=\"DefaultControlPadding\">16,8\u003C/Thickness>\n    \n    \u003C!-- Більш заокруглені кути -->\n    \u003CCornerRadius x:Key=\"DefaultCornerRadius\">8\u003C/CornerRadius>\n    \n    \u003C!-- Більший шрифт -->\n    \u003Csystem:Double x:Key=\"TextFontSize\">15\u003C/system:Double>\n    \n    \u003C!-- Власний стиль для кнопок -->\n    \u003CStyle TargetType=\"Button\" BasedOn=\"{StaticResource ButtonBaseStyle}\">\n        \u003CSetter Property=\"Height\" Value=\"{StaticResource DefaultControlHeight}\"/>\n        \u003CSetter Property=\"Padding\" Value=\"{StaticResource DefaultControlPadding}\"/>\n        \u003CSetter Property=\"FontSize\" Value=\"{StaticResource TextFontSize}\"/>\n    \u003C/Style>\n    \n\u003C/ResourceDictionary>\n",[3086,5894,5895,5907,5917,5921,5926,5951,5976,5980,5985,6010,6014,6019,6043,6047,6052,6077,6102,6124,6146,6154,6158],{"__ignoreMap":3084},[3089,5896,5897,5899,5901,5903,5905],{"class":3091,"line":3092},[3089,5898,3178],{"class":3177},[3089,5900,3260],{"class":3181},[3089,5902,5003],{"class":3185},[3089,5904,3189],{"class":3099},[3089,5906,3204],{"class":3192},[3089,5908,5909,5911,5913,5915],{"class":3091,"line":3196},[3089,5910,5012],{"class":3185},[3089,5912,3189],{"class":3099},[3089,5914,5017],{"class":3192},[3089,5916,3240],{"class":3177},[3089,5918,5919],{"class":3091,"line":3207},[3089,5920,5024],{"class":3099},[3089,5922,5923],{"class":3091,"line":3218},[3089,5924,5925],{"class":3279},"    \u003C!-- Збільшені розміри -->\n",[3089,5927,5928,5930,5933,5935,5937,5940,5942,5945,5947,5949],{"class":3091,"line":3229},[3089,5929,3246],{"class":3177},[3089,5931,5932],{"class":3181},"system:Double",[3089,5934,5039],{"class":3185},[3089,5936,3189],{"class":3099},[3089,5938,5939],{"class":3192},"\"DefaultControlHeight\"",[3089,5941,5047],{"class":3177},[3089,5943,5944],{"class":3099},"40",[3089,5946,3344],{"class":3177},[3089,5948,5932],{"class":3181},[3089,5950,3240],{"class":3177},[3089,5952,5953,5955,5958,5960,5962,5965,5967,5970,5972,5974],{"class":3091,"line":3243},[3089,5954,3246],{"class":3177},[3089,5956,5957],{"class":3181},"Thickness",[3089,5959,5039],{"class":3185},[3089,5961,3189],{"class":3099},[3089,5963,5964],{"class":3192},"\"DefaultControlPadding\"",[3089,5966,5047],{"class":3177},[3089,5968,5969],{"class":3099},"16,8",[3089,5971,3344],{"class":3177},[3089,5973,5957],{"class":3181},[3089,5975,3240],{"class":3177},[3089,5977,5978],{"class":3091,"line":3254},[3089,5979,5024],{"class":3099},[3089,5981,5982],{"class":3091,"line":3265},[3089,5983,5984],{"class":3279},"    \u003C!-- Більш заокруглені кути -->\n",[3089,5986,5987,5989,5992,5994,5996,5999,6001,6004,6006,6008],{"class":3091,"line":3276},[3089,5988,3246],{"class":3177},[3089,5990,5991],{"class":3181},"CornerRadius",[3089,5993,5039],{"class":3185},[3089,5995,3189],{"class":3099},[3089,5997,5998],{"class":3192},"\"DefaultCornerRadius\"",[3089,6000,5047],{"class":3177},[3089,6002,6003],{"class":3099},"8",[3089,6005,3344],{"class":3177},[3089,6007,5991],{"class":3181},[3089,6009,3240],{"class":3177},[3089,6011,6012],{"class":3091,"line":3283},[3089,6013,5024],{"class":3099},[3089,6015,6016],{"class":3091,"line":3295},[3089,6017,6018],{"class":3279},"    \u003C!-- Більший шрифт -->\n",[3089,6020,6021,6023,6025,6027,6029,6032,6034,6037,6039,6041],{"class":3091,"line":3301},[3089,6022,3246],{"class":3177},[3089,6024,5932],{"class":3181},[3089,6026,5039],{"class":3185},[3089,6028,3189],{"class":3099},[3089,6030,6031],{"class":3192},"\"TextFontSize\"",[3089,6033,5047],{"class":3177},[3089,6035,6036],{"class":3099},"15",[3089,6038,3344],{"class":3177},[3089,6040,5932],{"class":3181},[3089,6042,3240],{"class":3177},[3089,6044,6045],{"class":3091,"line":3311},[3089,6046,5024],{"class":3099},[3089,6048,6049],{"class":3091,"line":3321},[3089,6050,6051],{"class":3279},"    \u003C!-- Власний стиль для кнопок -->\n",[3089,6053,6054,6056,6059,6062,6064,6067,6070,6072,6075],{"class":3091,"line":3331},[3089,6055,3246],{"class":3177},[3089,6057,6058],{"class":3181},"Style",[3089,6060,6061],{"class":3185}," TargetType",[3089,6063,3189],{"class":3099},[3089,6065,6066],{"class":3192},"\"Button\"",[3089,6068,6069],{"class":3185}," BasedOn",[3089,6071,3189],{"class":3099},[3089,6073,6074],{"class":3192},"\"{StaticResource ButtonBaseStyle}\"",[3089,6076,3240],{"class":3177},[3089,6078,6079,6081,6084,6087,6089,6092,6095,6097,6100],{"class":3091,"line":3341},[3089,6080,3257],{"class":3177},[3089,6082,6083],{"class":3181},"Setter",[3089,6085,6086],{"class":3185}," Property",[3089,6088,3189],{"class":3099},[3089,6090,6091],{"class":3192},"\"Height\"",[3089,6093,6094],{"class":3185}," Value",[3089,6096,3189],{"class":3099},[3089,6098,6099],{"class":3192},"\"{StaticResource DefaultControlHeight}\"",[3089,6101,3292],{"class":3177},[3089,6103,6104,6106,6108,6110,6112,6115,6117,6119,6122],{"class":3091,"line":3660},[3089,6105,3257],{"class":3177},[3089,6107,6083],{"class":3181},[3089,6109,6086],{"class":3185},[3089,6111,3189],{"class":3099},[3089,6113,6114],{"class":3192},"\"Padding\"",[3089,6116,6094],{"class":3185},[3089,6118,3189],{"class":3099},[3089,6120,6121],{"class":3192},"\"{StaticResource DefaultControlPadding}\"",[3089,6123,3292],{"class":3177},[3089,6125,6126,6128,6130,6132,6134,6137,6139,6141,6144],{"class":3091,"line":3673},[3089,6127,3257],{"class":3177},[3089,6129,6083],{"class":3181},[3089,6131,6086],{"class":3185},[3089,6133,3189],{"class":3099},[3089,6135,6136],{"class":3192},"\"FontSize\"",[3089,6138,6094],{"class":3185},[3089,6140,3189],{"class":3099},[3089,6142,6143],{"class":3192},"\"{StaticResource TextFontSize}\"",[3089,6145,3292],{"class":3177},[3089,6147,6148,6150,6152],{"class":3091,"line":3678},[3089,6149,3334],{"class":3177},[3089,6151,6058],{"class":3181},[3089,6153,3240],{"class":3177},[3089,6155,6156],{"class":3091,"line":3693},[3089,6157,5024],{"class":3099},[3089,6159,6160,6162,6164],{"class":3091,"line":3704},[3089,6161,3344],{"class":3177},[3089,6163,3260],{"class":3181},[3089,6165,3240],{"class":3177},[2964,6167,6168],{},"Skin дозволяє створювати радикально різні вигляди додатку без зміни XAML коду, просто перемикаючи ResourceDictionary.",[2959,6170,6172],{"id":6171},"базові-контроли-покращені-версії-стандартних","Базові контроли (покращені версії стандартних)",[2964,6174,6175],{},"HandyControl надає покращені версії всіх стандартних WPF контролів з додатковими можливостями, анімаціями, та кращим виглядом. Розглянемо найважливіші з них.",[3000,6177,6179],{"id":6178},"button-та-його-варіанти","Button та його варіанти",[2964,6181,6182],{},"HandyControl пропонує кілька типів кнопок для різних сценаріїв використання.",[2964,6184,6185,6187],{},[2983,6186,4118],{}," — стандартна кнопка з анімаціями при hover та click. HandyControl автоматично застосовує стилі до всіх кнопок, додаючи ripple ефект та плавні переходи.",[3079,6189,6191],{"className":3168,"code":6190,"language":3170,"meta":3084,"style":3084},"\u003C!-- Стандартна кнопка -->\n\u003Chc:Button Content=\"Стандартна кнопка\"/>\n\n\u003C!-- Primary кнопка (accent color) -->\n\u003Chc:Button Content=\"Primary\" Style=\"{StaticResource ButtonPrimary}\"/>\n\n\u003C!-- Success кнопка (зелена) -->\n\u003Chc:Button Content=\"Success\" Style=\"{StaticResource ButtonSuccess}\"/>\n\n\u003C!-- Danger кнопка (червона) -->\n\u003Chc:Button Content=\"Danger\" Style=\"{StaticResource ButtonDanger}\"/>\n\n\u003C!-- Warning кнопка (жовта) -->\n\u003Chc:Button Content=\"Warning\" Style=\"{StaticResource ButtonWarning}\"/>\n\n\u003C!-- Info кнопка (синя) -->\n\u003Chc:Button Content=\"Info\" Style=\"{StaticResource ButtonInfo}\"/>\n",[3086,6192,6193,6198,6213,6217,6222,6245,6249,6254,6276,6280,6285,6307,6311,6316,6338,6342,6347],{"__ignoreMap":3084},[3089,6194,6195],{"class":3091,"line":3092},[3089,6196,6197],{"class":3279},"\u003C!-- Стандартна кнопка -->\n",[3089,6199,6200,6202,6204,6206,6208,6211],{"class":3091,"line":3196},[3089,6201,3178],{"class":3177},[3089,6203,3726],{"class":3181},[3089,6205,3729],{"class":3185},[3089,6207,3189],{"class":3099},[3089,6209,6210],{"class":3192},"\"Стандартна кнопка\"",[3089,6212,3292],{"class":3177},[3089,6214,6215],{"class":3091,"line":3207},[3089,6216,4263],{"emptyLinePlaceholder":4262},[3089,6218,6219],{"class":3091,"line":3218},[3089,6220,6221],{"class":3279},"\u003C!-- Primary кнопка (accent color) -->\n",[3089,6223,6224,6226,6228,6230,6232,6235,6238,6240,6243],{"class":3091,"line":3229},[3089,6225,3178],{"class":3177},[3089,6227,3726],{"class":3181},[3089,6229,3729],{"class":3185},[3089,6231,3189],{"class":3099},[3089,6233,6234],{"class":3192},"\"Primary\"",[3089,6236,6237],{"class":3185}," Style",[3089,6239,3189],{"class":3099},[3089,6241,6242],{"class":3192},"\"{StaticResource ButtonPrimary}\"",[3089,6244,3292],{"class":3177},[3089,6246,6247],{"class":3091,"line":3243},[3089,6248,4263],{"emptyLinePlaceholder":4262},[3089,6250,6251],{"class":3091,"line":3254},[3089,6252,6253],{"class":3279},"\u003C!-- Success кнопка (зелена) -->\n",[3089,6255,6256,6258,6260,6262,6264,6267,6269,6271,6274],{"class":3091,"line":3265},[3089,6257,3178],{"class":3177},[3089,6259,3726],{"class":3181},[3089,6261,3729],{"class":3185},[3089,6263,3189],{"class":3099},[3089,6265,6266],{"class":3192},"\"Success\"",[3089,6268,6237],{"class":3185},[3089,6270,3189],{"class":3099},[3089,6272,6273],{"class":3192},"\"{StaticResource ButtonSuccess}\"",[3089,6275,3292],{"class":3177},[3089,6277,6278],{"class":3091,"line":3276},[3089,6279,4263],{"emptyLinePlaceholder":4262},[3089,6281,6282],{"class":3091,"line":3283},[3089,6283,6284],{"class":3279},"\u003C!-- Danger кнопка (червона) -->\n",[3089,6286,6287,6289,6291,6293,6295,6298,6300,6302,6305],{"class":3091,"line":3295},[3089,6288,3178],{"class":3177},[3089,6290,3726],{"class":3181},[3089,6292,3729],{"class":3185},[3089,6294,3189],{"class":3099},[3089,6296,6297],{"class":3192},"\"Danger\"",[3089,6299,6237],{"class":3185},[3089,6301,3189],{"class":3099},[3089,6303,6304],{"class":3192},"\"{StaticResource ButtonDanger}\"",[3089,6306,3292],{"class":3177},[3089,6308,6309],{"class":3091,"line":3301},[3089,6310,4263],{"emptyLinePlaceholder":4262},[3089,6312,6313],{"class":3091,"line":3311},[3089,6314,6315],{"class":3279},"\u003C!-- Warning кнопка (жовта) -->\n",[3089,6317,6318,6320,6322,6324,6326,6329,6331,6333,6336],{"class":3091,"line":3321},[3089,6319,3178],{"class":3177},[3089,6321,3726],{"class":3181},[3089,6323,3729],{"class":3185},[3089,6325,3189],{"class":3099},[3089,6327,6328],{"class":3192},"\"Warning\"",[3089,6330,6237],{"class":3185},[3089,6332,3189],{"class":3099},[3089,6334,6335],{"class":3192},"\"{StaticResource ButtonWarning}\"",[3089,6337,3292],{"class":3177},[3089,6339,6340],{"class":3091,"line":3331},[3089,6341,4263],{"emptyLinePlaceholder":4262},[3089,6343,6344],{"class":3091,"line":3341},[3089,6345,6346],{"class":3279},"\u003C!-- Info кнопка (синя) -->\n",[3089,6348,6349,6351,6353,6355,6357,6360,6362,6364,6367],{"class":3091,"line":3660},[3089,6350,3178],{"class":3177},[3089,6352,3726],{"class":3181},[3089,6354,3729],{"class":3185},[3089,6356,3189],{"class":3099},[3089,6358,6359],{"class":3192},"\"Info\"",[3089,6361,6237],{"class":3185},[3089,6363,3189],{"class":3099},[3089,6365,6366],{"class":3192},"\"{StaticResource ButtonInfo}\"",[3089,6368,3292],{"class":3177},[3789,6370,6371],{},[3079,6372,6374],{"className":3168,"code":6373,"language":3170,"meta":3084,"style":3084},"\u003CStackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n    \u003CButton Content=\"Стандартна\" Margin=\"5\" Padding=\"15,8\" Background=\"#F0F0F0\" BorderBrush=\"#DCDCDC\" BorderThickness=\"1\"/>\n    \u003CButton Content=\"Primary\" Margin=\"5\" Padding=\"15,8\" Background=\"#1E90FF\" Foreground=\"White\" BorderThickness=\"0\"/>\n    \u003CButton Content=\"Success\" Margin=\"5\" Padding=\"15,8\" Background=\"#27AE60\" Foreground=\"White\" BorderThickness=\"0\"/>\n    \u003CButton Content=\"Danger\" Margin=\"5\" Padding=\"15,8\" Background=\"#E74C3C\" Foreground=\"White\" BorderThickness=\"0\"/>\n    \u003CButton Content=\"Warning\" Margin=\"5\" Padding=\"15,8\" Background=\"#F39C12\" Foreground=\"White\" BorderThickness=\"0\"/>\n    \u003CButton Content=\"Info\" Margin=\"5\" Padding=\"15,8\" Background=\"#3498DB\" Foreground=\"White\" BorderThickness=\"0\"/>\n\u003C/StackPanel>\n",[3086,6375,6376,6407,6455,6499,6544,6589,6634,6679],{"__ignoreMap":3084},[3089,6377,6378,6380,6382,6385,6387,6390,6393,6395,6398,6401,6403,6405],{"class":3091,"line":3092},[3089,6379,3178],{"class":3177},[3089,6381,3574],{"class":3181},[3089,6383,6384],{"class":3185}," Orientation",[3089,6386,3189],{"class":3099},[3089,6388,6389],{"class":3192},"\"Horizontal\"",[3089,6391,6392],{"class":3185}," HorizontalAlignment",[3089,6394,3189],{"class":3099},[3089,6396,6397],{"class":3192},"\"Center\"",[3089,6399,6400],{"class":3185}," VerticalAlignment",[3089,6402,3189],{"class":3099},[3089,6404,6397],{"class":3192},[3089,6406,3240],{"class":3177},[3089,6408,6409,6411,6413,6415,6417,6420,6422,6424,6427,6429,6431,6434,6436,6438,6441,6443,6445,6447,6449,6451,6453],{"class":3091,"line":3196},[3089,6410,3246],{"class":3177},[3089,6412,4118],{"class":3181},[3089,6414,3729],{"class":3185},[3089,6416,3189],{"class":3099},[3089,6418,6419],{"class":3192},"\"Стандартна\"",[3089,6421,3560],{"class":3185},[3089,6423,3189],{"class":3099},[3089,6425,6426],{"class":3192},"\"5\"",[3089,6428,3901],{"class":3185},[3089,6430,3189],{"class":3099},[3089,6432,6433],{"class":3192},"\"15,8\"",[3089,6435,3810],{"class":3185},[3089,6437,3189],{"class":3099},[3089,6439,6440],{"class":3192},"\"#F0F0F0\"",[3089,6442,3885],{"class":3185},[3089,6444,3189],{"class":3099},[3089,6446,3890],{"class":3192},[3089,6448,3893],{"class":3185},[3089,6450,3189],{"class":3099},[3089,6452,3898],{"class":3192},[3089,6454,3292],{"class":3177},[3089,6456,6457,6459,6461,6463,6465,6467,6469,6471,6473,6475,6477,6479,6481,6483,6485,6487,6489,6491,6493,6495,6497],{"class":3091,"line":3207},[3089,6458,3246],{"class":3177},[3089,6460,4118],{"class":3181},[3089,6462,3729],{"class":3185},[3089,6464,3189],{"class":3099},[3089,6466,6234],{"class":3192},[3089,6468,3560],{"class":3185},[3089,6470,3189],{"class":3099},[3089,6472,6426],{"class":3192},[3089,6474,3901],{"class":3185},[3089,6476,3189],{"class":3099},[3089,6478,6433],{"class":3192},[3089,6480,3810],{"class":3185},[3089,6482,3189],{"class":3099},[3089,6484,4136],{"class":3192},[3089,6486,3946],{"class":3185},[3089,6488,3189],{"class":3099},[3089,6490,3815],{"class":3192},[3089,6492,3893],{"class":3185},[3089,6494,3189],{"class":3099},[3089,6496,3981],{"class":3192},[3089,6498,3292],{"class":3177},[3089,6500,6501,6503,6505,6507,6509,6511,6513,6515,6517,6519,6521,6523,6525,6527,6530,6532,6534,6536,6538,6540,6542],{"class":3091,"line":3218},[3089,6502,3246],{"class":3177},[3089,6504,4118],{"class":3181},[3089,6506,3729],{"class":3185},[3089,6508,3189],{"class":3099},[3089,6510,6266],{"class":3192},[3089,6512,3560],{"class":3185},[3089,6514,3189],{"class":3099},[3089,6516,6426],{"class":3192},[3089,6518,3901],{"class":3185},[3089,6520,3189],{"class":3099},[3089,6522,6433],{"class":3192},[3089,6524,3810],{"class":3185},[3089,6526,3189],{"class":3099},[3089,6528,6529],{"class":3192},"\"#27AE60\"",[3089,6531,3946],{"class":3185},[3089,6533,3189],{"class":3099},[3089,6535,3815],{"class":3192},[3089,6537,3893],{"class":3185},[3089,6539,3189],{"class":3099},[3089,6541,3981],{"class":3192},[3089,6543,3292],{"class":3177},[3089,6545,6546,6548,6550,6552,6554,6556,6558,6560,6562,6564,6566,6568,6570,6572,6575,6577,6579,6581,6583,6585,6587],{"class":3091,"line":3229},[3089,6547,3246],{"class":3177},[3089,6549,4118],{"class":3181},[3089,6551,3729],{"class":3185},[3089,6553,3189],{"class":3099},[3089,6555,6297],{"class":3192},[3089,6557,3560],{"class":3185},[3089,6559,3189],{"class":3099},[3089,6561,6426],{"class":3192},[3089,6563,3901],{"class":3185},[3089,6565,3189],{"class":3099},[3089,6567,6433],{"class":3192},[3089,6569,3810],{"class":3185},[3089,6571,3189],{"class":3099},[3089,6573,6574],{"class":3192},"\"#E74C3C\"",[3089,6576,3946],{"class":3185},[3089,6578,3189],{"class":3099},[3089,6580,3815],{"class":3192},[3089,6582,3893],{"class":3185},[3089,6584,3189],{"class":3099},[3089,6586,3981],{"class":3192},[3089,6588,3292],{"class":3177},[3089,6590,6591,6593,6595,6597,6599,6601,6603,6605,6607,6609,6611,6613,6615,6617,6620,6622,6624,6626,6628,6630,6632],{"class":3091,"line":3243},[3089,6592,3246],{"class":3177},[3089,6594,4118],{"class":3181},[3089,6596,3729],{"class":3185},[3089,6598,3189],{"class":3099},[3089,6600,6328],{"class":3192},[3089,6602,3560],{"class":3185},[3089,6604,3189],{"class":3099},[3089,6606,6426],{"class":3192},[3089,6608,3901],{"class":3185},[3089,6610,3189],{"class":3099},[3089,6612,6433],{"class":3192},[3089,6614,3810],{"class":3185},[3089,6616,3189],{"class":3099},[3089,6618,6619],{"class":3192},"\"#F39C12\"",[3089,6621,3946],{"class":3185},[3089,6623,3189],{"class":3099},[3089,6625,3815],{"class":3192},[3089,6627,3893],{"class":3185},[3089,6629,3189],{"class":3099},[3089,6631,3981],{"class":3192},[3089,6633,3292],{"class":3177},[3089,6635,6636,6638,6640,6642,6644,6646,6648,6650,6652,6654,6656,6658,6660,6662,6665,6667,6669,6671,6673,6675,6677],{"class":3091,"line":3254},[3089,6637,3246],{"class":3177},[3089,6639,4118],{"class":3181},[3089,6641,3729],{"class":3185},[3089,6643,3189],{"class":3099},[3089,6645,6359],{"class":3192},[3089,6647,3560],{"class":3185},[3089,6649,3189],{"class":3099},[3089,6651,6426],{"class":3192},[3089,6653,3901],{"class":3185},[3089,6655,3189],{"class":3099},[3089,6657,6433],{"class":3192},[3089,6659,3810],{"class":3185},[3089,6661,3189],{"class":3099},[3089,6663,6664],{"class":3192},"\"#3498DB\"",[3089,6666,3946],{"class":3185},[3089,6668,3189],{"class":3099},[3089,6670,3815],{"class":3192},[3089,6672,3893],{"class":3185},[3089,6674,3189],{"class":3099},[3089,6676,3981],{"class":3192},[3089,6678,3292],{"class":3177},[3089,6680,6681,6683,6685],{"class":3091,"line":3265},[3089,6682,3344],{"class":3177},[3089,6684,3574],{"class":3181},[3089,6686,3240],{"class":3177},[2964,6688,6689,6692],{},[2983,6690,6691],{},"IconButton"," — кнопка з іконкою. HandyControl використовує власну систему іконок на базі Geometry.",[3079,6694,6696],{"className":3168,"code":6695,"language":3170,"meta":3084,"style":3084},"\u003Chc:Button Style=\"{StaticResource ButtonIcon}\">\n    \u003CPath Data=\"{StaticResource SaveGeometry}\" \n          Fill=\"{Binding Foreground, RelativeSource={RelativeSource AncestorType=Button}}\"\n          Width=\"16\" Height=\"16\"/>\n\u003C/hc:Button>\n\n\u003C!-- Або з використанням attached property -->\n\u003Chc:Button Content=\"Зберегти\" \n           Style=\"{StaticResource ButtonPrimary}\"\n           hc:IconElement.Geometry=\"{StaticResource SaveGeometry}\"/>\n",[3086,6697,6698,6713,6730,6740,6759,6767,6771,6776,6791,6800],{"__ignoreMap":3084},[3089,6699,6700,6702,6704,6706,6708,6711],{"class":3091,"line":3092},[3089,6701,3178],{"class":3177},[3089,6703,3726],{"class":3181},[3089,6705,6237],{"class":3185},[3089,6707,3189],{"class":3099},[3089,6709,6710],{"class":3192},"\"{StaticResource ButtonIcon}\"",[3089,6712,3240],{"class":3177},[3089,6714,6715,6717,6720,6723,6725,6728],{"class":3091,"line":3196},[3089,6716,3246],{"class":3177},[3089,6718,6719],{"class":3181},"Path",[3089,6721,6722],{"class":3185}," Data",[3089,6724,3189],{"class":3099},[3089,6726,6727],{"class":3192},"\"{StaticResource SaveGeometry}\"",[3089,6729,3526],{"class":3099},[3089,6731,6732,6735,6737],{"class":3091,"line":3207},[3089,6733,6734],{"class":3185},"          Fill",[3089,6736,3189],{"class":3099},[3089,6738,6739],{"class":3192},"\"{Binding Foreground, RelativeSource={RelativeSource AncestorType=Button}}\"\n",[3089,6741,6742,6745,6747,6750,6753,6755,6757],{"class":3091,"line":3218},[3089,6743,6744],{"class":3185},"          Width",[3089,6746,3189],{"class":3099},[3089,6748,6749],{"class":3192},"\"16\"",[3089,6751,6752],{"class":3185}," Height",[3089,6754,3189],{"class":3099},[3089,6756,6749],{"class":3192},[3089,6758,3292],{"class":3177},[3089,6760,6761,6763,6765],{"class":3091,"line":3229},[3089,6762,3344],{"class":3177},[3089,6764,3726],{"class":3181},[3089,6766,3240],{"class":3177},[3089,6768,6769],{"class":3091,"line":3243},[3089,6770,4263],{"emptyLinePlaceholder":4262},[3089,6772,6773],{"class":3091,"line":3254},[3089,6774,6775],{"class":3279},"\u003C!-- Або з використанням attached property -->\n",[3089,6777,6778,6780,6782,6784,6786,6789],{"class":3091,"line":3265},[3089,6779,3178],{"class":3177},[3089,6781,3726],{"class":3181},[3089,6783,3729],{"class":3185},[3089,6785,3189],{"class":3099},[3089,6787,6788],{"class":3192},"\"Зберегти\"",[3089,6790,3526],{"class":3099},[3089,6792,6793,6796,6798],{"class":3091,"line":3276},[3089,6794,6795],{"class":3185},"           Style",[3089,6797,3189],{"class":3099},[3089,6799,3747],{"class":3192},[3089,6801,6802,6805,6807,6809],{"class":3091,"line":3283},[3089,6803,6804],{"class":3185},"           hc:IconElement.Geometry",[3089,6806,3189],{"class":3099},[3089,6808,6727],{"class":3192},[3089,6810,3292],{"class":3177},[2964,6812,6813,6816],{},[2983,6814,6815],{},"LoadingButton"," — кнопка з індикатором завантаження, корисна для асинхронних операцій.",[3079,6818,6820],{"className":3168,"code":6819,"language":3170,"meta":3084,"style":3084},"\u003Chc:LoadingButton Content=\"Завантажити дані\" \n                  IsLoading=\"{Binding IsLoading}\"\n                  Style=\"{StaticResource ButtonPrimary}\"\n                  Command=\"{Binding LoadDataCommand}\"/>\n",[3086,6821,6822,6838,6848,6857],{"__ignoreMap":3084},[3089,6823,6824,6826,6829,6831,6833,6836],{"class":3091,"line":3092},[3089,6825,3178],{"class":3177},[3089,6827,6828],{"class":3181},"hc:LoadingButton",[3089,6830,3729],{"class":3185},[3089,6832,3189],{"class":3099},[3089,6834,6835],{"class":3192},"\"Завантажити дані\"",[3089,6837,3526],{"class":3099},[3089,6839,6840,6843,6845],{"class":3091,"line":3196},[3089,6841,6842],{"class":3185},"                  IsLoading",[3089,6844,3189],{"class":3099},[3089,6846,6847],{"class":3192},"\"{Binding IsLoading}\"\n",[3089,6849,6850,6853,6855],{"class":3091,"line":3207},[3089,6851,6852],{"class":3185},"                  Style",[3089,6854,3189],{"class":3099},[3089,6856,3747],{"class":3192},[3089,6858,6859,6862,6864,6867],{"class":3091,"line":3218},[3089,6860,6861],{"class":3185},"                  Command",[3089,6863,3189],{"class":3099},[3089,6865,6866],{"class":3192},"\"{Binding LoadDataCommand}\"",[3089,6868,3292],{"class":3177},[2964,6870,6871],{},"У ViewModel:",[3079,6873,6875],{"className":4236,"code":6874,"language":4238,"meta":3084,"style":3084},"private bool _isLoading;\npublic bool IsLoading\n{\n    get => _isLoading;\n    set => SetProperty(ref _isLoading, value);\n}\n\nprivate async Task LoadDataAsync()\n{\n    IsLoading = true;\n    try\n    {\n        await Task.Delay(2000); // Симуляція завантаження\n        // Завантаження даних...\n    }\n    finally\n    {\n        IsLoading = false;\n    }\n}\n",[3086,6876,6877,6889,6898,6902,6915,6939,6943,6947,6963,6967,6979,6984,6988,7011,7016,7020,7025,7029,7041,7045],{"__ignoreMap":3084},[3089,6878,6879,6881,6884,6887],{"class":3091,"line":3092},[3089,6880,4773],{"class":4268},[3089,6882,6883],{"class":4268}," bool",[3089,6885,6886],{"class":4312}," _isLoading",[3089,6888,4257],{"class":3099},[3089,6890,6891,6893,6895],{"class":3091,"line":3196},[3089,6892,4269],{"class":4268},[3089,6894,6883],{"class":4268},[3089,6896,6897],{"class":4312}," IsLoading\n",[3089,6899,6900],{"class":3091,"line":3207},[3089,6901,4289],{"class":3099},[3089,6903,6904,6907,6910,6913],{"class":3091,"line":3218},[3089,6905,6906],{"class":4312},"    get",[3089,6908,6909],{"class":3099}," => ",[3089,6911,6912],{"class":4312},"_isLoading",[3089,6914,4257],{"class":3099},[3089,6916,6917,6920,6922,6925,6927,6930,6932,6934,6937],{"class":3091,"line":3229},[3089,6918,6919],{"class":4312},"    set",[3089,6921,6909],{"class":3099},[3089,6923,6924],{"class":3095},"SetProperty",[3089,6926,4306],{"class":3099},[3089,6928,6929],{"class":4268},"ref",[3089,6931,6886],{"class":4312},[3089,6933,4789],{"class":3099},[3089,6935,6936],{"class":4312},"value",[3089,6938,4339],{"class":3099},[3089,6940,6941],{"class":3091,"line":3243},[3089,6942,4394],{"class":3099},[3089,6944,6945],{"class":3091,"line":3254},[3089,6946,4263],{"emptyLinePlaceholder":4262},[3089,6948,6949,6951,6954,6957,6960],{"class":3091,"line":3265},[3089,6950,4773],{"class":4268},[3089,6952,6953],{"class":4268}," async",[3089,6955,6956],{"class":4249}," Task",[3089,6958,6959],{"class":3095}," LoadDataAsync",[3089,6961,6962],{"class":3099},"()\n",[3089,6964,6965],{"class":3091,"line":3276},[3089,6966,4289],{"class":3099},[3089,6968,6969,6972,6974,6977],{"class":3091,"line":3283},[3089,6970,6971],{"class":4312},"    IsLoading",[3089,6973,4488],{"class":3099},[3089,6975,6976],{"class":4268},"true",[3089,6978,4257],{"class":3099},[3089,6980,6981],{"class":3091,"line":3295},[3089,6982,6983],{"class":4245},"    try\n",[3089,6985,6986],{"class":3091,"line":3301},[3089,6987,4321],{"class":3099},[3089,6989,6990,6993,6995,6997,7000,7002,7005,7008],{"class":3091,"line":3311},[3089,6991,6992],{"class":4268},"        await",[3089,6994,6956],{"class":4312},[3089,6996,3454],{"class":3099},[3089,6998,6999],{"class":3095},"Delay",[3089,7001,4306],{"class":3099},[3089,7003,7004],{"class":4844},"2000",[3089,7006,7007],{"class":3099},"); ",[3089,7009,7010],{"class":3279},"// Симуляція завантаження\n",[3089,7012,7013],{"class":3091,"line":3321},[3089,7014,7015],{"class":3279},"        // Завантаження даних...\n",[3089,7017,7018],{"class":3091,"line":3331},[3089,7019,4389],{"class":3099},[3089,7021,7022],{"class":3091,"line":3341},[3089,7023,7024],{"class":4245},"    finally\n",[3089,7026,7027],{"class":3091,"line":3660},[3089,7028,4321],{"class":3099},[3089,7030,7031,7034,7036,7039],{"class":3091,"line":3673},[3089,7032,7033],{"class":4312},"        IsLoading",[3089,7035,4488],{"class":3099},[3089,7037,7038],{"class":4268},"false",[3089,7040,4257],{"class":3099},[3089,7042,7043],{"class":3091,"line":3678},[3089,7044,4389],{"class":3099},[3089,7046,7047],{"class":3091,"line":3693},[3089,7048,4394],{"class":3099},[2964,7050,7051,7054],{},[2983,7052,7053],{},"ToggleButton"," — перемикач з покращеним виглядом та анімаціями.",[3079,7056,7058],{"className":3168,"code":7057,"language":3170,"meta":3084,"style":3084},"\u003Chc:ToggleButton Content=\"Увімкнути сповіщення\" \n                 IsChecked=\"{Binding NotificationsEnabled}\"/>\n\n\u003C!-- Стиль як switch -->\n\u003Chc:ToggleButton Style=\"{StaticResource ToggleButtonSwitch}\"\n                 IsChecked=\"{Binding IsDarkTheme}\"/>\n",[3086,7059,7060,7076,7088,7092,7097,7110],{"__ignoreMap":3084},[3089,7061,7062,7064,7067,7069,7071,7074],{"class":3091,"line":3092},[3089,7063,3178],{"class":3177},[3089,7065,7066],{"class":3181},"hc:ToggleButton",[3089,7068,3729],{"class":3185},[3089,7070,3189],{"class":3099},[3089,7072,7073],{"class":3192},"\"Увімкнути сповіщення\"",[3089,7075,3526],{"class":3099},[3089,7077,7078,7081,7083,7086],{"class":3091,"line":3196},[3089,7079,7080],{"class":3185},"                 IsChecked",[3089,7082,3189],{"class":3099},[3089,7084,7085],{"class":3192},"\"{Binding NotificationsEnabled}\"",[3089,7087,3292],{"class":3177},[3089,7089,7090],{"class":3091,"line":3207},[3089,7091,4263],{"emptyLinePlaceholder":4262},[3089,7093,7094],{"class":3091,"line":3218},[3089,7095,7096],{"class":3279},"\u003C!-- Стиль як switch -->\n",[3089,7098,7099,7101,7103,7105,7107],{"class":3091,"line":3229},[3089,7100,3178],{"class":3177},[3089,7102,7066],{"class":3181},[3089,7104,6237],{"class":3185},[3089,7106,3189],{"class":3099},[3089,7108,7109],{"class":3192},"\"{StaticResource ToggleButtonSwitch}\"\n",[3089,7111,7112,7114,7116,7119],{"class":3091,"line":3243},[3089,7113,7080],{"class":3185},[3089,7115,3189],{"class":3099},[3089,7117,7118],{"class":3192},"\"{Binding IsDarkTheme}\"",[3089,7120,3292],{"class":3177},[2964,7122,7123,7126],{},[2983,7124,7125],{},"RadioButton та CheckBox"," — покращені версії з анімаціями та кращим виглядом.",[3079,7128,7130],{"className":3168,"code":7129,"language":3170,"meta":3084,"style":3084},"\u003CStackPanel>\n    \u003CTextBlock Text=\"Виберіть мову:\" Margin=\"0,0,0,10\"/>\n    \u003Chc:RadioButton Content=\"Українська\" GroupName=\"Language\" IsChecked=\"True\"/>\n    \u003Chc:RadioButton Content=\"English\" GroupName=\"Language\"/>\n    \u003Chc:RadioButton Content=\"中文\" GroupName=\"Language\"/>\n    \n    \u003CTextBlock Text=\"Налаштування:\" Margin=\"0,20,0,10\"/>\n    \u003Chc:CheckBox Content=\"Автоматичне оновлення\"/>\n    \u003Chc:CheckBox Content=\"Показувати сповіщення\"/>\n    \u003Chc:CheckBox Content=\"Зберігати історію\"/>\n\u003C/StackPanel>\n",[3086,7131,7132,7140,7161,7193,7214,7235,7239,7261,7277,7292,7307],{"__ignoreMap":3084},[3089,7133,7134,7136,7138],{"class":3091,"line":3092},[3089,7135,3178],{"class":3177},[3089,7137,3574],{"class":3181},[3089,7139,3240],{"class":3177},[3089,7141,7142,7144,7146,7148,7150,7153,7155,7157,7159],{"class":3091,"line":3196},[3089,7143,3246],{"class":3177},[3089,7145,3583],{"class":3181},[3089,7147,3586],{"class":3185},[3089,7149,3189],{"class":3099},[3089,7151,7152],{"class":3192},"\"Виберіть мову:\"",[3089,7154,3560],{"class":3185},[3089,7156,3189],{"class":3099},[3089,7158,3668],{"class":3192},[3089,7160,3292],{"class":3177},[3089,7162,7163,7165,7168,7170,7172,7175,7178,7180,7183,7186,7188,7191],{"class":3091,"line":3207},[3089,7164,3246],{"class":3177},[3089,7166,7167],{"class":3181},"hc:RadioButton",[3089,7169,3729],{"class":3185},[3089,7171,3189],{"class":3099},[3089,7173,7174],{"class":3192},"\"Українська\"",[3089,7176,7177],{"class":3185}," GroupName",[3089,7179,3189],{"class":3099},[3089,7181,7182],{"class":3192},"\"Language\"",[3089,7184,7185],{"class":3185}," IsChecked",[3089,7187,3189],{"class":3099},[3089,7189,7190],{"class":3192},"\"True\"",[3089,7192,3292],{"class":3177},[3089,7194,7195,7197,7199,7201,7203,7206,7208,7210,7212],{"class":3091,"line":3218},[3089,7196,3246],{"class":3177},[3089,7198,7167],{"class":3181},[3089,7200,3729],{"class":3185},[3089,7202,3189],{"class":3099},[3089,7204,7205],{"class":3192},"\"English\"",[3089,7207,7177],{"class":3185},[3089,7209,3189],{"class":3099},[3089,7211,7182],{"class":3192},[3089,7213,3292],{"class":3177},[3089,7215,7216,7218,7220,7222,7224,7227,7229,7231,7233],{"class":3091,"line":3229},[3089,7217,3246],{"class":3177},[3089,7219,7167],{"class":3181},[3089,7221,3729],{"class":3185},[3089,7223,3189],{"class":3099},[3089,7225,7226],{"class":3192},"\"中文\"",[3089,7228,7177],{"class":3185},[3089,7230,3189],{"class":3099},[3089,7232,7182],{"class":3192},[3089,7234,3292],{"class":3177},[3089,7236,7237],{"class":3091,"line":3243},[3089,7238,5024],{"class":3099},[3089,7240,7241,7243,7245,7247,7249,7252,7254,7256,7259],{"class":3091,"line":3254},[3089,7242,3246],{"class":3177},[3089,7244,3583],{"class":3181},[3089,7246,3586],{"class":3185},[3089,7248,3189],{"class":3099},[3089,7250,7251],{"class":3192},"\"Налаштування:\"",[3089,7253,3560],{"class":3185},[3089,7255,3189],{"class":3099},[3089,7257,7258],{"class":3192},"\"0,20,0,10\"",[3089,7260,3292],{"class":3177},[3089,7262,7263,7265,7268,7270,7272,7275],{"class":3091,"line":3265},[3089,7264,3246],{"class":3177},[3089,7266,7267],{"class":3181},"hc:CheckBox",[3089,7269,3729],{"class":3185},[3089,7271,3189],{"class":3099},[3089,7273,7274],{"class":3192},"\"Автоматичне оновлення\"",[3089,7276,3292],{"class":3177},[3089,7278,7279,7281,7283,7285,7287,7290],{"class":3091,"line":3276},[3089,7280,3246],{"class":3177},[3089,7282,7267],{"class":3181},[3089,7284,3729],{"class":3185},[3089,7286,3189],{"class":3099},[3089,7288,7289],{"class":3192},"\"Показувати сповіщення\"",[3089,7291,3292],{"class":3177},[3089,7293,7294,7296,7298,7300,7302,7305],{"class":3091,"line":3283},[3089,7295,3246],{"class":3177},[3089,7297,7267],{"class":3181},[3089,7299,3729],{"class":3185},[3089,7301,3189],{"class":3099},[3089,7303,7304],{"class":3192},"\"Зберігати історію\"",[3089,7306,3292],{"class":3177},[3089,7308,7309,7311,7313],{"class":3091,"line":3295},[3089,7310,3344],{"class":3177},[3089,7312,3574],{"class":3181},[3089,7314,3240],{"class":3177},[3129,7316,7318,7321,7359],{"title":7317},"Стилі кнопок",[2964,7319,7320],{},"HandyControl надає понад 10 різних стилів для кнопок:",[3008,7322,7323,7341,7347,7353],{},[3011,7324,7325,4789,7328,4789,7331,4789,7334,4789,7337,7340],{},[3086,7326,7327],{},"ButtonPrimary",[3086,7329,7330],{},"ButtonSuccess",[3086,7332,7333],{},"ButtonDanger",[3086,7335,7336],{},"ButtonWarning",[3086,7338,7339],{},"ButtonInfo"," — кольорові кнопки",[3011,7342,7343,7346],{},[3086,7344,7345],{},"ButtonIcon"," — кнопка-іконка без тексту",[3011,7348,7349,7352],{},[3086,7350,7351],{},"ButtonCustom"," — базовий стиль для створення власних варіантів",[3011,7354,7355,7358],{},[3086,7356,7357],{},"ButtonDefault"," — стандартний стиль (застосовується автоматично)",[2964,7360,7361],{},"Всі стилі підтримують ripple ефект при кліку та плавні анімації при hover.",[3000,7363,7365],{"id":7364},"textbox-та-input-контроли","TextBox та Input контроли",[2964,7367,7368],{},"HandyControl значно покращує стандартні input контроли, додаючи watermark, іконки, кнопки очищення, та валідацію.",[2964,7370,7371,7373],{},[2983,7372,3967],{}," з заголовком та placeholder:",[3079,7375,7377],{"className":3168,"code":7376,"language":3170,"meta":3084,"style":3084},"\u003Chc:TextBox hc:InfoElement.Title=\"Email\"\n            hc:InfoElement.Placeholder=\"example@email.com\"\n            hc:InfoElement.Necessary=\"True\"\n            Text=\"{Binding Email, UpdateSourceTrigger=PropertyChanged}\"/>\n",[3086,7378,7379,7392,7402,7412],{"__ignoreMap":3084},[3089,7380,7381,7383,7385,7387,7389],{"class":3091,"line":3092},[3089,7382,3178],{"class":3177},[3089,7384,3639],{"class":3181},[3089,7386,3642],{"class":3185},[3089,7388,3189],{"class":3099},[3089,7390,7391],{"class":3192},"\"Email\"\n",[3089,7393,7394,7397,7399],{"class":3091,"line":3196},[3089,7395,7396],{"class":3185},"            hc:InfoElement.Placeholder",[3089,7398,3189],{"class":3099},[3089,7400,7401],{"class":3192},"\"example@email.com\"\n",[3089,7403,7404,7407,7409],{"class":3091,"line":3207},[3089,7405,7406],{"class":3185},"            hc:InfoElement.Necessary",[3089,7408,3189],{"class":3099},[3089,7410,7411],{"class":3192},"\"True\"\n",[3089,7413,7414,7417,7419,7422],{"class":3091,"line":3218},[3089,7415,7416],{"class":3185},"            Text",[3089,7418,3189],{"class":3099},[3089,7420,7421],{"class":3192},"\"{Binding Email, UpdateSourceTrigger=PropertyChanged}\"",[3089,7423,3292],{"class":3177},[2964,7425,7426,7427,7430],{},"Attached property ",[3086,7428,7429],{},"InfoElement"," додає додаткову інформацію до контролу:",[3008,7432,7433,7439,7445],{},[3011,7434,7435,7438],{},[3086,7436,7437],{},"Title"," — заголовок над полем",[3011,7440,7441,7444],{},[3086,7442,7443],{},"Placeholder"," — текст-підказка в порожньому полі",[3011,7446,7447,7450],{},[3086,7448,7449],{},"Necessary"," — позначка обов'язкового поля (червона зірочка)",[2964,7452,7453,3165],{},[2983,7454,7455],{},"TextBox з іконкою та кнопкою очищення",[3079,7457,7459],{"className":3168,"code":7458,"language":3170,"meta":3084,"style":3084},"\u003Chc:TextBox hc:InfoElement.Title=\"Пошук\"\n            hc:InfoElement.Placeholder=\"Введіть запит...\"\n            Style=\"{StaticResource TextBoxExtend}\"\n            hc:IconElement.Geometry=\"{StaticResource SearchGeometry}\"\n            hc:TitleElement.TitlePlacement=\"Left\"/>\n",[3086,7460,7461,7474,7483,7493,7503],{"__ignoreMap":3084},[3089,7462,7463,7465,7467,7469,7471],{"class":3091,"line":3092},[3089,7464,3178],{"class":3177},[3089,7466,3639],{"class":3181},[3089,7468,3642],{"class":3185},[3089,7470,3189],{"class":3099},[3089,7472,7473],{"class":3192},"\"Пошук\"\n",[3089,7475,7476,7478,7480],{"class":3091,"line":3196},[3089,7477,7396],{"class":3185},[3089,7479,3189],{"class":3099},[3089,7481,7482],{"class":3192},"\"Введіть запит...\"\n",[3089,7484,7485,7488,7490],{"class":3091,"line":3207},[3089,7486,7487],{"class":3185},"            Style",[3089,7489,3189],{"class":3099},[3089,7491,7492],{"class":3192},"\"{StaticResource TextBoxExtend}\"\n",[3089,7494,7495,7498,7500],{"class":3091,"line":3218},[3089,7496,7497],{"class":3185},"            hc:IconElement.Geometry",[3089,7499,3189],{"class":3099},[3089,7501,7502],{"class":3192},"\"{StaticResource SearchGeometry}\"\n",[3089,7504,7505,7508,7510,7512],{"class":3091,"line":3229},[3089,7506,7507],{"class":3185},"            hc:TitleElement.TitlePlacement",[3089,7509,3189],{"class":3099},[3089,7511,3758],{"class":3192},[3089,7513,3292],{"class":3177},[2964,7515,7516,7518],{},[2983,7517,4083],{}," з можливістю показу/приховування пароля:",[3079,7520,7522],{"className":3168,"code":7521,"language":3170,"meta":3084,"style":3084},"\u003Chc:PasswordBox hc:InfoElement.Title=\"Пароль\"\n                hc:InfoElement.Placeholder=\"Мінімум 8 символів\"\n                hc:InfoElement.Necessary=\"True\"\n                ShowEyeButton=\"True\"\n                Password=\"{Binding Password, Mode=TwoWay}\"/>\n",[3086,7523,7524,7536,7546,7555,7564],{"__ignoreMap":3084},[3089,7525,7526,7528,7530,7532,7534],{"class":3091,"line":3092},[3089,7527,3178],{"class":3177},[3089,7529,3683],{"class":3181},[3089,7531,3642],{"class":3185},[3089,7533,3189],{"class":3099},[3089,7535,3690],{"class":3192},[3089,7537,7538,7541,7543],{"class":3091,"line":3196},[3089,7539,7540],{"class":3185},"                hc:InfoElement.Placeholder",[3089,7542,3189],{"class":3099},[3089,7544,7545],{"class":3192},"\"Мінімум 8 символів\"\n",[3089,7547,7548,7551,7553],{"class":3091,"line":3207},[3089,7549,7550],{"class":3185},"                hc:InfoElement.Necessary",[3089,7552,3189],{"class":3099},[3089,7554,7411],{"class":3192},[3089,7556,7557,7560,7562],{"class":3091,"line":3218},[3089,7558,7559],{"class":3185},"                ShowEyeButton",[3089,7561,3189],{"class":3099},[3089,7563,7411],{"class":3192},[3089,7565,7566,7569,7571,7574],{"class":3091,"line":3229},[3089,7567,7568],{"class":3185},"                Password",[3089,7570,3189],{"class":3099},[3089,7572,7573],{"class":3192},"\"{Binding Password, Mode=TwoWay}\"",[3089,7575,3292],{"class":3177},[2964,7577,7578,7579,7582],{},"Властивість ",[3086,7580,7581],{},"ShowEyeButton=\"True\""," додає кнопку-іконку ока для показу/приховування пароля.",[2964,7584,7585,7588],{},[2983,7586,7587],{},"NumericUpDown"," — числовий input зі стрілками:",[3079,7590,7592],{"className":3168,"code":7591,"language":3170,"meta":3084,"style":3084},"\u003Chc:NumericUpDown hc:InfoElement.Title=\"Кількість\"\n                  Value=\"{Binding Quantity}\"\n                  Minimum=\"1\"\n                  Maximum=\"100\"\n                  Increment=\"1\"/>\n",[3086,7593,7594,7608,7618,7628,7638],{"__ignoreMap":3084},[3089,7595,7596,7598,7601,7603,7605],{"class":3091,"line":3092},[3089,7597,3178],{"class":3177},[3089,7599,7600],{"class":3181},"hc:NumericUpDown",[3089,7602,3642],{"class":3185},[3089,7604,3189],{"class":3099},[3089,7606,7607],{"class":3192},"\"Кількість\"\n",[3089,7609,7610,7613,7615],{"class":3091,"line":3196},[3089,7611,7612],{"class":3185},"                  Value",[3089,7614,3189],{"class":3099},[3089,7616,7617],{"class":3192},"\"{Binding Quantity}\"\n",[3089,7619,7620,7623,7625],{"class":3091,"line":3207},[3089,7621,7622],{"class":3185},"                  Minimum",[3089,7624,3189],{"class":3099},[3089,7626,7627],{"class":3192},"\"1\"\n",[3089,7629,7630,7633,7635],{"class":3091,"line":3218},[3089,7631,7632],{"class":3185},"                  Maximum",[3089,7634,3189],{"class":3099},[3089,7636,7637],{"class":3192},"\"100\"\n",[3089,7639,7640,7643,7645,7647],{"class":3091,"line":3229},[3089,7641,7642],{"class":3185},"                  Increment",[3089,7644,3189],{"class":3099},[3089,7646,3898],{"class":3192},[3089,7648,3292],{"class":3177},[2964,7650,7651,7654],{},[2983,7652,7653],{},"SearchBar"," — спеціалізований контрол для пошуку:",[3079,7656,7658],{"className":3168,"code":7657,"language":3170,"meta":3084,"style":3084},"\u003Chc:SearchBar hc:InfoElement.Placeholder=\"Пошук...\"\n              Style=\"{StaticResource SearchBarPlus}\"\n              SearchStarted=\"SearchBar_SearchStarted\"/>\n",[3086,7659,7660,7675,7685],{"__ignoreMap":3084},[3089,7661,7662,7664,7667,7670,7672],{"class":3091,"line":3092},[3089,7663,3178],{"class":3177},[3089,7665,7666],{"class":3181},"hc:SearchBar",[3089,7668,7669],{"class":3185}," hc:InfoElement.Placeholder",[3089,7671,3189],{"class":3099},[3089,7673,7674],{"class":3192},"\"Пошук...\"\n",[3089,7676,7677,7680,7682],{"class":3091,"line":3196},[3089,7678,7679],{"class":3185},"              Style",[3089,7681,3189],{"class":3099},[3089,7683,7684],{"class":3192},"\"{StaticResource SearchBarPlus}\"\n",[3089,7686,7687,7690,7692,7695],{"class":3091,"line":3207},[3089,7688,7689],{"class":3185},"              SearchStarted",[3089,7691,3189],{"class":3099},[3089,7693,7694],{"class":3192},"\"SearchBar_SearchStarted\"",[3089,7696,3292],{"class":3177},[2964,7698,7699],{},"Code-behind:",[3079,7701,7703],{"className":4236,"code":7702,"language":4238,"meta":3084,"style":3084},"private void SearchBar_SearchStarted(object sender, HandyControl.Data.FunctionEventArgs\u003Cstring> e)\n{\n    var searchText = e.Info;\n    // Виконати пошук...\n}\n",[3086,7704,7705,7746,7750,7768,7773],{"__ignoreMap":3084},[3089,7706,7707,7709,7711,7714,7716,7718,7720,7722,7725,7727,7730,7732,7735,7737,7739,7742,7744],{"class":3091,"line":3092},[3089,7708,4773],{"class":4268},[3089,7710,4300],{"class":4268},[3089,7712,7713],{"class":3095}," SearchBar_SearchStarted",[3089,7715,4306],{"class":3099},[3089,7717,4783],{"class":4268},[3089,7719,4786],{"class":4312},[3089,7721,4789],{"class":3099},[3089,7723,7724],{"class":4249},"HandyControl",[3089,7726,3454],{"class":3099},[3089,7728,7729],{"class":4249},"Data",[3089,7731,3454],{"class":3099},[3089,7733,7734],{"class":4249},"FunctionEventArgs",[3089,7736,3178],{"class":3099},[3089,7738,5848],{"class":4268},[3089,7740,7741],{"class":3099},"> ",[3089,7743,4336],{"class":4312},[3089,7745,4316],{"class":3099},[3089,7747,7748],{"class":3091,"line":3196},[3089,7749,4289],{"class":3099},[3089,7751,7752,7754,7757,7759,7761,7763,7766],{"class":3091,"line":3207},[3089,7753,4805],{"class":4268},[3089,7755,7756],{"class":4312}," searchText",[3089,7758,4488],{"class":3099},[3089,7760,4336],{"class":4312},[3089,7762,3454],{"class":3099},[3089,7764,7765],{"class":4312},"Info",[3089,7767,4257],{"class":3099},[3089,7769,7770],{"class":3091,"line":3218},[3089,7771,7772],{"class":3279},"    // Виконати пошук...\n",[3089,7774,7775],{"class":3091,"line":3229},[3089,7776,4394],{"class":3099},[2964,7778,7779,7782],{},[2983,7780,7781],{},"AutoCompleteTextBox"," — текстове поле з автодоповненням:",[3079,7784,7786],{"className":3168,"code":7785,"language":3170,"meta":3084,"style":3084},"\u003Chc:AutoCompleteTextBox hc:InfoElement.Title=\"Країна\"\n                        hc:InfoElement.Placeholder=\"Почніть вводити...\"\n                        ItemsSource=\"{Binding Countries}\"\n                        DisplayMemberPath=\"Name\"/>\n",[3086,7787,7788,7802,7811,7821],{"__ignoreMap":3084},[3089,7789,7790,7792,7795,7797,7799],{"class":3091,"line":3092},[3089,7791,3178],{"class":3177},[3089,7793,7794],{"class":3181},"hc:AutoCompleteTextBox",[3089,7796,3642],{"class":3185},[3089,7798,3189],{"class":3099},[3089,7800,7801],{"class":3192},"\"Країна\"\n",[3089,7803,7804,7806,7808],{"class":3091,"line":3196},[3089,7805,3652],{"class":3185},[3089,7807,3189],{"class":3099},[3089,7809,7810],{"class":3192},"\"Почніть вводити...\"\n",[3089,7812,7813,7816,7818],{"class":3091,"line":3207},[3089,7814,7815],{"class":3185},"                        ItemsSource",[3089,7817,3189],{"class":3099},[3089,7819,7820],{"class":3192},"\"{Binding Countries}\"\n",[3089,7822,7823,7826,7828,7831],{"class":3091,"line":3218},[3089,7824,7825],{"class":3185},"                        DisplayMemberPath",[3089,7827,3189],{"class":3099},[3089,7829,7830],{"class":3192},"\"Name\"",[3089,7832,3292],{"class":3177},[2964,7834,6871],{},[3079,7836,7838],{"className":4236,"code":7837,"language":4238,"meta":3084,"style":3084},"public ObservableCollection\u003CCountry> Countries { get; set; }\n\npublic MainViewModel()\n{\n    Countries = new ObservableCollection\u003CCountry>\n    {\n        new Country { Name = \"Україна\" },\n        new Country { Name = \"США\" },\n        new Country { Name = \"Великобританія\" },\n        // ...\n    };\n}\n",[3086,7839,7840,7872,7876,7885,7889,7907,7911,7932,7949,7966,7971,7976],{"__ignoreMap":3084},[3089,7841,7842,7844,7847,7849,7852,7854,7857,7860,7863,7866,7869],{"class":3091,"line":3092},[3089,7843,4269],{"class":4268},[3089,7845,7846],{"class":4312}," ObservableCollection",[3089,7848,3178],{"class":3099},[3089,7850,7851],{"class":4312},"Country",[3089,7853,7741],{"class":3099},[3089,7855,7856],{"class":4312},"Countries",[3089,7858,7859],{"class":3099}," { ",[3089,7861,7862],{"class":4312},"get",[3089,7864,7865],{"class":3099},"; ",[3089,7867,7868],{"class":4312},"set",[3089,7870,7871],{"class":3099},"; }\n",[3089,7873,7874],{"class":3091,"line":3196},[3089,7875,4263],{"emptyLinePlaceholder":4262},[3089,7877,7878,7880,7883],{"class":3091,"line":3207},[3089,7879,4269],{"class":4268},[3089,7881,7882],{"class":3095}," MainViewModel",[3089,7884,6962],{"class":3099},[3089,7886,7887],{"class":3091,"line":3218},[3089,7888,4289],{"class":3099},[3089,7890,7891,7894,7896,7899,7901,7903,7905],{"class":3091,"line":3229},[3089,7892,7893],{"class":4312},"    Countries",[3089,7895,4488],{"class":3099},[3089,7897,7898],{"class":4268},"new",[3089,7900,7846],{"class":4249},[3089,7902,3178],{"class":3099},[3089,7904,7851],{"class":4249},[3089,7906,3240],{"class":3099},[3089,7908,7909],{"class":3091,"line":3243},[3089,7910,4321],{"class":3099},[3089,7912,7913,7916,7919,7921,7924,7926,7929],{"class":3091,"line":3254},[3089,7914,7915],{"class":4268},"        new",[3089,7917,7918],{"class":4249}," Country",[3089,7920,7859],{"class":3099},[3089,7922,7923],{"class":4312},"Name",[3089,7925,4488],{"class":3099},[3089,7927,7928],{"class":3118},"\"Україна\"",[3089,7930,7931],{"class":3099}," },\n",[3089,7933,7934,7936,7938,7940,7942,7944,7947],{"class":3091,"line":3265},[3089,7935,7915],{"class":4268},[3089,7937,7918],{"class":4249},[3089,7939,7859],{"class":3099},[3089,7941,7923],{"class":4312},[3089,7943,4488],{"class":3099},[3089,7945,7946],{"class":3118},"\"США\"",[3089,7948,7931],{"class":3099},[3089,7950,7951,7953,7955,7957,7959,7961,7964],{"class":3091,"line":3276},[3089,7952,7915],{"class":4268},[3089,7954,7918],{"class":4249},[3089,7956,7859],{"class":3099},[3089,7958,7923],{"class":4312},[3089,7960,4488],{"class":3099},[3089,7962,7963],{"class":3118},"\"Великобританія\"",[3089,7965,7931],{"class":3099},[3089,7967,7968],{"class":3091,"line":3283},[3089,7969,7970],{"class":3279},"        // ...\n",[3089,7972,7973],{"class":3091,"line":3295},[3089,7974,7975],{"class":3099},"    };\n",[3089,7977,7978],{"class":3091,"line":3301},[3089,7979,4394],{"class":3099},[2977,7981,7983,7993,7998],{"title":7982},"Валідація input контролів",[2964,7984,7985,7986,3450,7989,7992],{},"HandyControl підтримує стандартну WPF валідацію через ",[3086,7987,7988],{},"IDataErrorInfo",[3086,7990,7991],{},"INotifyDataErrorInfo",". При помилці валідації контрол автоматично підсвічується червоним, а повідомлення про помилку відображається під полем.",[2964,7994,7995,7996,3165],{},"Приклад з ",[3086,7997,7988],{},[3079,7999,8001],{"className":4236,"code":8000,"language":4238,"meta":3084,"style":3084},"public class UserViewModel : INotifyPropertyChanged, IDataErrorInfo\n{\n    private string _email;\n    public string Email\n    {\n        get => _email;\n        set { _email = value; OnPropertyChanged(); }\n    }\n    \n    public string this[string columnName]\n    {\n        get\n        {\n            if (columnName == nameof(Email))\n            {\n                if (string.IsNullOrEmpty(Email))\n                    return \"Email обов'язковий\";\n                if (!Email.Contains(\"@\"))\n                    return \"Невірний формат email\";\n            }\n            return null;\n        }\n    }\n    \n    public string Error => null;\n}\n",[3086,8002,8003,8022,8026,8039,8049,8053,8065,8086,8090,8094,8114,8118,8123,8127,8150,8155,8175,8185,8206,8215,8220,8230,8234,8238,8242,8258],{"__ignoreMap":3084},[3089,8004,8005,8007,8009,8012,8014,8017,8019],{"class":3091,"line":3092},[3089,8006,4269],{"class":4268},[3089,8008,4275],{"class":4268},[3089,8010,8011],{"class":4249}," UserViewModel",[3089,8013,4281],{"class":3099},[3089,8015,8016],{"class":4249},"INotifyPropertyChanged",[3089,8018,4789],{"class":3099},[3089,8020,8021],{"class":4249},"IDataErrorInfo\n",[3089,8023,8024],{"class":3091,"line":3196},[3089,8025,4289],{"class":3099},[3089,8027,8028,8031,8034,8037],{"class":3091,"line":3207},[3089,8029,8030],{"class":4268},"    private",[3089,8032,8033],{"class":4268}," string",[3089,8035,8036],{"class":4312}," _email",[3089,8038,4257],{"class":3099},[3089,8040,8041,8044,8046],{"class":3091,"line":3218},[3089,8042,8043],{"class":4268},"    public",[3089,8045,8033],{"class":4268},[3089,8047,8048],{"class":4312}," Email\n",[3089,8050,8051],{"class":3091,"line":3229},[3089,8052,4321],{"class":3099},[3089,8054,8055,8058,8060,8063],{"class":3091,"line":3243},[3089,8056,8057],{"class":4268},"        get",[3089,8059,6909],{"class":3099},[3089,8061,8062],{"class":4312},"_email",[3089,8064,4257],{"class":3099},[3089,8066,8067,8070,8072,8074,8076,8078,8080,8083],{"class":3091,"line":3254},[3089,8068,8069],{"class":4268},"        set",[3089,8071,7859],{"class":3099},[3089,8073,8062],{"class":4312},[3089,8075,4488],{"class":3099},[3089,8077,6936],{"class":4312},[3089,8079,7865],{"class":3099},[3089,8081,8082],{"class":3095},"OnPropertyChanged",[3089,8084,8085],{"class":3099},"(); }\n",[3089,8087,8088],{"class":3091,"line":3265},[3089,8089,4389],{"class":3099},[3089,8091,8092],{"class":3091,"line":3276},[3089,8093,5024],{"class":3099},[3089,8095,8096,8098,8100,8103,8106,8108,8111],{"class":3091,"line":3283},[3089,8097,8043],{"class":4268},[3089,8099,8033],{"class":4268},[3089,8101,8102],{"class":4268}," this",[3089,8104,8105],{"class":3099},"[",[3089,8107,5848],{"class":4268},[3089,8109,8110],{"class":4312}," columnName",[3089,8112,8113],{"class":3099},"]\n",[3089,8115,8116],{"class":3091,"line":3295},[3089,8117,4321],{"class":3099},[3089,8119,8120],{"class":3091,"line":3301},[3089,8121,8122],{"class":4268},"        get\n",[3089,8124,8125],{"class":3091,"line":3311},[3089,8126,5556],{"class":3099},[3089,8128,8129,8132,8134,8137,8139,8142,8144,8147],{"class":3091,"line":3321},[3089,8130,8131],{"class":4245},"            if",[3089,8133,4829],{"class":3099},[3089,8135,8136],{"class":4312},"columnName",[3089,8138,4841],{"class":3099},[3089,8140,8141],{"class":4268},"nameof",[3089,8143,4306],{"class":3099},[3089,8145,8146],{"class":4312},"Email",[3089,8148,8149],{"class":3099},"))\n",[3089,8151,8152],{"class":3091,"line":3331},[3089,8153,8154],{"class":3099},"            {\n",[3089,8156,8157,8160,8162,8164,8166,8169,8171,8173],{"class":3091,"line":3341},[3089,8158,8159],{"class":4245},"                if",[3089,8161,4829],{"class":3099},[3089,8163,5848],{"class":4268},[3089,8165,3454],{"class":3099},[3089,8167,8168],{"class":3095},"IsNullOrEmpty",[3089,8170,4306],{"class":3099},[3089,8172,8146],{"class":4312},[3089,8174,8149],{"class":3099},[3089,8176,8177,8180,8183],{"class":3091,"line":3660},[3089,8178,8179],{"class":4245},"                    return",[3089,8181,8182],{"class":3118}," \"Email обов'язковий\"",[3089,8184,4257],{"class":3099},[3089,8186,8187,8189,8192,8194,8196,8199,8201,8204],{"class":3091,"line":3673},[3089,8188,8159],{"class":4245},[3089,8190,8191],{"class":3099}," (!",[3089,8193,8146],{"class":4312},[3089,8195,3454],{"class":3099},[3089,8197,8198],{"class":3095},"Contains",[3089,8200,4306],{"class":3099},[3089,8202,8203],{"class":3118},"\"@\"",[3089,8205,8149],{"class":3099},[3089,8207,8208,8210,8213],{"class":3091,"line":3678},[3089,8209,8179],{"class":4245},[3089,8211,8212],{"class":3118}," \"Невірний формат email\"",[3089,8214,4257],{"class":3099},[3089,8216,8217],{"class":3091,"line":3693},[3089,8218,8219],{"class":3099},"            }\n",[3089,8221,8222,8225,8228],{"class":3091,"line":3704},[3089,8223,8224],{"class":4245},"            return",[3089,8226,8227],{"class":4268}," null",[3089,8229,4257],{"class":3099},[3089,8231,8232],{"class":3091,"line":3716},[3089,8233,5584],{"class":3099},[3089,8235,8236],{"class":3091,"line":3721},[3089,8237,4389],{"class":3099},[3089,8239,8240],{"class":3091,"line":3739},[3089,8241,5024],{"class":3099},[3089,8243,8244,8246,8248,8251,8253,8256],{"class":3091,"line":3750},[3089,8245,8043],{"class":4268},[3089,8247,8033],{"class":4268},[3089,8249,8250],{"class":4312}," Error",[3089,8252,6909],{"class":3099},[3089,8254,8255],{"class":4268},"null",[3089,8257,4257],{"class":3099},[3089,8259,8260],{"class":3091,"line":3763},[3089,8261,4394],{"class":3099},[3000,8263,8265],{"id":8264},"combobox-та-picker-контроли","ComboBox та Picker контроли",[2964,8267,8268],{},"HandyControl покращує контроли вибору, додаючи кращий вигляд, анімації, та додаткові можливості.",[2964,8270,8271,8274],{},[2983,8272,8273],{},"ComboBox"," — покращений dropdown з підтримкою пошуку:",[3079,8276,8278],{"className":3168,"code":8277,"language":3170,"meta":3084,"style":3084},"\u003Chc:ComboBox hc:InfoElement.Title=\"Місто\"\n             hc:InfoElement.Placeholder=\"Виберіть місто\"\n             ItemsSource=\"{Binding Cities}\"\n             SelectedItem=\"{Binding SelectedCity}\"\n             IsEditable=\"True\"/>\n",[3086,8279,8280,8293,8303,8313,8323],{"__ignoreMap":3084},[3089,8281,8282,8284,8286,8288,8290],{"class":3091,"line":3092},[3089,8283,3178],{"class":3177},[3089,8285,4669],{"class":3181},[3089,8287,3642],{"class":3185},[3089,8289,3189],{"class":3099},[3089,8291,8292],{"class":3192},"\"Місто\"\n",[3089,8294,8295,8298,8300],{"class":3091,"line":3196},[3089,8296,8297],{"class":3185},"             hc:InfoElement.Placeholder",[3089,8299,3189],{"class":3099},[3089,8301,8302],{"class":3192},"\"Виберіть місто\"\n",[3089,8304,8305,8308,8310],{"class":3091,"line":3207},[3089,8306,8307],{"class":3185},"             ItemsSource",[3089,8309,3189],{"class":3099},[3089,8311,8312],{"class":3192},"\"{Binding Cities}\"\n",[3089,8314,8315,8318,8320],{"class":3091,"line":3218},[3089,8316,8317],{"class":3185},"             SelectedItem",[3089,8319,3189],{"class":3099},[3089,8321,8322],{"class":3192},"\"{Binding SelectedCity}\"\n",[3089,8324,8325,8328,8330,8332],{"class":3091,"line":3229},[3089,8326,8327],{"class":3185},"             IsEditable",[3089,8329,3189],{"class":3099},[3089,8331,7190],{"class":3192},[3089,8333,3292],{"class":3177},[2964,8335,8336,8339],{},[2983,8337,8338],{},"DatePicker"," — вибір дати з покращеним календарем:",[3079,8341,8343],{"className":3168,"code":8342,"language":3170,"meta":3084,"style":3084},"\u003Chc:DatePicker hc:InfoElement.Title=\"Дата народження\"\n               hc:InfoElement.Placeholder=\"Виберіть дату\"\n               SelectedDate=\"{Binding BirthDate}\"\n               DisplayDateStart=\"1900-01-01\"\n               DisplayDateEnd=\"{x:Static system:DateTime.Now}\"/>\n",[3086,8344,8345,8359,8369,8379,8389],{"__ignoreMap":3084},[3089,8346,8347,8349,8352,8354,8356],{"class":3091,"line":3092},[3089,8348,3178],{"class":3177},[3089,8350,8351],{"class":3181},"hc:DatePicker",[3089,8353,3642],{"class":3185},[3089,8355,3189],{"class":3099},[3089,8357,8358],{"class":3192},"\"Дата народження\"\n",[3089,8360,8361,8364,8366],{"class":3091,"line":3196},[3089,8362,8363],{"class":3185},"               hc:InfoElement.Placeholder",[3089,8365,3189],{"class":3099},[3089,8367,8368],{"class":3192},"\"Виберіть дату\"\n",[3089,8370,8371,8374,8376],{"class":3091,"line":3207},[3089,8372,8373],{"class":3185},"               SelectedDate",[3089,8375,3189],{"class":3099},[3089,8377,8378],{"class":3192},"\"{Binding BirthDate}\"\n",[3089,8380,8381,8384,8386],{"class":3091,"line":3218},[3089,8382,8383],{"class":3185},"               DisplayDateStart",[3089,8385,3189],{"class":3099},[3089,8387,8388],{"class":3192},"\"1900-01-01\"\n",[3089,8390,8391,8394,8396,8399],{"class":3091,"line":3229},[3089,8392,8393],{"class":3185},"               DisplayDateEnd",[3089,8395,3189],{"class":3099},[3089,8397,8398],{"class":3192},"\"{x:Static system:DateTime.Now}\"",[3089,8400,3292],{"class":3177},[2964,8402,8403,8406],{},[2983,8404,8405],{},"TimePicker"," — вибір часу:",[3079,8408,8410],{"className":3168,"code":8409,"language":3170,"meta":3084,"style":3084},"\u003Chc:TimePicker hc:InfoElement.Title=\"Час зустрічі\"\n               SelectedTime=\"{Binding MeetingTime}\"\n               TimeFormat=\"HH:mm\"/>\n",[3086,8411,8412,8426,8436],{"__ignoreMap":3084},[3089,8413,8414,8416,8419,8421,8423],{"class":3091,"line":3092},[3089,8415,3178],{"class":3177},[3089,8417,8418],{"class":3181},"hc:TimePicker",[3089,8420,3642],{"class":3185},[3089,8422,3189],{"class":3099},[3089,8424,8425],{"class":3192},"\"Час зустрічі\"\n",[3089,8427,8428,8431,8433],{"class":3091,"line":3196},[3089,8429,8430],{"class":3185},"               SelectedTime",[3089,8432,3189],{"class":3099},[3089,8434,8435],{"class":3192},"\"{Binding MeetingTime}\"\n",[3089,8437,8438,8441,8443,8446],{"class":3091,"line":3207},[3089,8439,8440],{"class":3185},"               TimeFormat",[3089,8442,3189],{"class":3099},[3089,8444,8445],{"class":3192},"\"HH:mm\"",[3089,8447,3292],{"class":3177},[2964,8449,8450,8453],{},[2983,8451,8452],{},"DateTimePicker"," — комбінований вибір дати та часу:",[3079,8455,8457],{"className":3168,"code":8456,"language":3170,"meta":3084,"style":3084},"\u003Chc:DateTimePicker hc:InfoElement.Title=\"Дата та час події\"\n                   DateTime=\"{Binding EventDateTime}\"/>\n",[3086,8458,8459,8473],{"__ignoreMap":3084},[3089,8460,8461,8463,8466,8468,8470],{"class":3091,"line":3092},[3089,8462,3178],{"class":3177},[3089,8464,8465],{"class":3181},"hc:DateTimePicker",[3089,8467,3642],{"class":3185},[3089,8469,3189],{"class":3099},[3089,8471,8472],{"class":3192},"\"Дата та час події\"\n",[3089,8474,8475,8478,8480,8483],{"class":3091,"line":3196},[3089,8476,8477],{"class":3185},"                   DateTime",[3089,8479,3189],{"class":3099},[3089,8481,8482],{"class":3192},"\"{Binding EventDateTime}\"",[3089,8484,3292],{"class":3177},[2964,8486,8487,8490],{},[2983,8488,8489],{},"ColorPicker"," — вибір кольору з різними режимами:",[3079,8492,8494],{"className":3168,"code":8493,"language":3170,"meta":3084,"style":3084},"\u003Chc:ColorPicker hc:InfoElement.Title=\"Колір фону\"\n                SelectedBrush=\"{Binding BackgroundColor}\"/>\n",[3086,8495,8496,8510],{"__ignoreMap":3084},[3089,8497,8498,8500,8503,8505,8507],{"class":3091,"line":3092},[3089,8499,3178],{"class":3177},[3089,8501,8502],{"class":3181},"hc:ColorPicker",[3089,8504,3642],{"class":3185},[3089,8506,3189],{"class":3099},[3089,8508,8509],{"class":3192},"\"Колір фону\"\n",[3089,8511,8512,8515,8517,8520],{"class":3091,"line":3196},[3089,8513,8514],{"class":3185},"                SelectedBrush",[3089,8516,3189],{"class":3099},[3089,8518,8519],{"class":3192},"\"{Binding BackgroundColor}\"",[3089,8521,3292],{"class":3177},[2964,8523,8524],{},"ColorPicker підтримує кілька режимів вибору:",[3008,8526,8527,8530,8533,8536],{},[3011,8528,8529],{},"RGB sliders",[3011,8531,8532],{},"HSV color wheel",[3011,8534,8535],{},"Hex input",[3011,8537,8538],{},"Палітра попередньо визначених кольорів",[3000,8540,8542],{"id":8541},"slider-та-progress-контроли","Slider та Progress контроли",[2964,8544,8545,8548],{},[2983,8546,8547],{},"Slider"," з tooltip та custom marks:",[3079,8550,8552],{"className":3168,"code":8551,"language":3170,"meta":3084,"style":3084},"\u003Chc:Slider hc:InfoElement.Title=\"Гучність\"\n           Minimum=\"0\"\n           Maximum=\"100\"\n           Value=\"{Binding Volume}\"\n           IsSnapToTickEnabled=\"True\"\n           TickFrequency=\"10\"\n           AutoToolTipPlacement=\"TopLeft\"/>\n",[3086,8553,8554,8568,8577,8586,8596,8605,8615],{"__ignoreMap":3084},[3089,8555,8556,8558,8561,8563,8565],{"class":3091,"line":3092},[3089,8557,3178],{"class":3177},[3089,8559,8560],{"class":3181},"hc:Slider",[3089,8562,3642],{"class":3185},[3089,8564,3189],{"class":3099},[3089,8566,8567],{"class":3192},"\"Гучність\"\n",[3089,8569,8570,8573,8575],{"class":3091,"line":3196},[3089,8571,8572],{"class":3185},"           Minimum",[3089,8574,3189],{"class":3099},[3089,8576,4168],{"class":3192},[3089,8578,8579,8582,8584],{"class":3091,"line":3207},[3089,8580,8581],{"class":3185},"           Maximum",[3089,8583,3189],{"class":3099},[3089,8585,7637],{"class":3192},[3089,8587,8588,8591,8593],{"class":3091,"line":3218},[3089,8589,8590],{"class":3185},"           Value",[3089,8592,3189],{"class":3099},[3089,8594,8595],{"class":3192},"\"{Binding Volume}\"\n",[3089,8597,8598,8601,8603],{"class":3091,"line":3229},[3089,8599,8600],{"class":3185},"           IsSnapToTickEnabled",[3089,8602,3189],{"class":3099},[3089,8604,7411],{"class":3192},[3089,8606,8607,8610,8612],{"class":3091,"line":3243},[3089,8608,8609],{"class":3185},"           TickFrequency",[3089,8611,3189],{"class":3099},[3089,8613,8614],{"class":3192},"\"10\"\n",[3089,8616,8617,8620,8622,8625],{"class":3091,"line":3254},[3089,8618,8619],{"class":3185},"           AutoToolTipPlacement",[3089,8621,3189],{"class":3099},[3089,8623,8624],{"class":3192},"\"TopLeft\"",[3089,8626,3292],{"class":3177},[2964,8628,8629,8632],{},[2983,8630,8631],{},"RangeSlider"," — вибір діапазону значень:",[3079,8634,8636],{"className":3168,"code":8635,"language":3170,"meta":3084,"style":3084},"\u003Chc:RangeSlider hc:InfoElement.Title=\"Діапазон цін\"\n                Minimum=\"0\"\n                Maximum=\"10000\"\n                ValueStart=\"{Binding MinPrice}\"\n                ValueEnd=\"{Binding MaxPrice}\"\n                TickFrequency=\"1000\"/>\n",[3086,8637,8638,8652,8661,8671,8681,8691],{"__ignoreMap":3084},[3089,8639,8640,8642,8645,8647,8649],{"class":3091,"line":3092},[3089,8641,3178],{"class":3177},[3089,8643,8644],{"class":3181},"hc:RangeSlider",[3089,8646,3642],{"class":3185},[3089,8648,3189],{"class":3099},[3089,8650,8651],{"class":3192},"\"Діапазон цін\"\n",[3089,8653,8654,8657,8659],{"class":3091,"line":3196},[3089,8655,8656],{"class":3185},"                Minimum",[3089,8658,3189],{"class":3099},[3089,8660,4168],{"class":3192},[3089,8662,8663,8666,8668],{"class":3091,"line":3207},[3089,8664,8665],{"class":3185},"                Maximum",[3089,8667,3189],{"class":3099},[3089,8669,8670],{"class":3192},"\"10000\"\n",[3089,8672,8673,8676,8678],{"class":3091,"line":3218},[3089,8674,8675],{"class":3185},"                ValueStart",[3089,8677,3189],{"class":3099},[3089,8679,8680],{"class":3192},"\"{Binding MinPrice}\"\n",[3089,8682,8683,8686,8688],{"class":3091,"line":3229},[3089,8684,8685],{"class":3185},"                ValueEnd",[3089,8687,3189],{"class":3099},[3089,8689,8690],{"class":3192},"\"{Binding MaxPrice}\"\n",[3089,8692,8693,8696,8698,8701],{"class":3091,"line":3243},[3089,8694,8695],{"class":3185},"                TickFrequency",[3089,8697,3189],{"class":3099},[3089,8699,8700],{"class":3192},"\"1000\"",[3089,8702,3292],{"class":3177},[2964,8704,8705],{},"RangeSlider корисний для фільтрів, де потрібно вибрати діапазон (ціна від-до, вік від-до, тощо).",[2964,8707,8708,8711],{},[2983,8709,8710],{},"ProgressBar"," з анімаціями:",[3079,8713,8715],{"className":3168,"code":8714,"language":3170,"meta":3084,"style":3084},"\u003C!-- Стандартний прогрес -->\n\u003Chc:ProgressBar Value=\"{Binding Progress}\" \n                Maximum=\"100\"\n                Height=\"20\"/>\n\n\u003C!-- Невизначений прогрес (indeterminate) -->\n\u003Chc:ProgressBar IsIndeterminate=\"True\" Height=\"20\"/>\n",[3086,8716,8717,8722,8738,8746,8757,8761,8766],{"__ignoreMap":3084},[3089,8718,8719],{"class":3091,"line":3092},[3089,8720,8721],{"class":3279},"\u003C!-- Стандартний прогрес -->\n",[3089,8723,8724,8726,8729,8731,8733,8736],{"class":3091,"line":3196},[3089,8725,3178],{"class":3177},[3089,8727,8728],{"class":3181},"hc:ProgressBar",[3089,8730,6094],{"class":3185},[3089,8732,3189],{"class":3099},[3089,8734,8735],{"class":3192},"\"{Binding Progress}\"",[3089,8737,3526],{"class":3099},[3089,8739,8740,8742,8744],{"class":3091,"line":3207},[3089,8741,8665],{"class":3185},[3089,8743,3189],{"class":3099},[3089,8745,7637],{"class":3192},[3089,8747,8748,8751,8753,8755],{"class":3091,"line":3218},[3089,8749,8750],{"class":3185},"                Height",[3089,8752,3189],{"class":3099},[3089,8754,3565],{"class":3192},[3089,8756,3292],{"class":3177},[3089,8758,8759],{"class":3091,"line":3229},[3089,8760,4263],{"emptyLinePlaceholder":4262},[3089,8762,8763],{"class":3091,"line":3243},[3089,8764,8765],{"class":3279},"\u003C!-- Невизначений прогрес (indeterminate) -->\n",[3089,8767,8768,8770,8772,8775,8777,8779,8781,8783,8785],{"class":3091,"line":3254},[3089,8769,3178],{"class":3177},[3089,8771,8728],{"class":3181},[3089,8773,8774],{"class":3185}," IsIndeterminate",[3089,8776,3189],{"class":3099},[3089,8778,7190],{"class":3192},[3089,8780,6752],{"class":3185},[3089,8782,3189],{"class":3099},[3089,8784,3565],{"class":3192},[3089,8786,3292],{"class":3177},[2964,8788,8789,8792],{},[2983,8790,8791],{},"CircleProgressBar"," — круговий індикатор прогресу:",[3079,8794,8796],{"className":3168,"code":8795,"language":3170,"meta":3084,"style":3084},"\u003Chc:CircleProgressBar Value=\"{Binding Progress}\"\n                      Maximum=\"100\"\n                      Width=\"100\"\n                      Height=\"100\"\n                      ShowText=\"True\"\n                      ArcThickness=\"10\"/>\n",[3086,8797,8798,8812,8821,8830,8839,8848],{"__ignoreMap":3084},[3089,8799,8800,8802,8805,8807,8809],{"class":3091,"line":3092},[3089,8801,3178],{"class":3177},[3089,8803,8804],{"class":3181},"hc:CircleProgressBar",[3089,8806,6094],{"class":3185},[3089,8808,3189],{"class":3099},[3089,8810,8811],{"class":3192},"\"{Binding Progress}\"\n",[3089,8813,8814,8817,8819],{"class":3091,"line":3196},[3089,8815,8816],{"class":3185},"                      Maximum",[3089,8818,3189],{"class":3099},[3089,8820,7637],{"class":3192},[3089,8822,8823,8826,8828],{"class":3091,"line":3207},[3089,8824,8825],{"class":3185},"                      Width",[3089,8827,3189],{"class":3099},[3089,8829,7637],{"class":3192},[3089,8831,8832,8835,8837],{"class":3091,"line":3218},[3089,8833,8834],{"class":3185},"                      Height",[3089,8836,3189],{"class":3099},[3089,8838,7637],{"class":3192},[3089,8840,8841,8844,8846],{"class":3091,"line":3229},[3089,8842,8843],{"class":3185},"                      ShowText",[3089,8845,3189],{"class":3099},[3089,8847,7411],{"class":3192},[3089,8849,8850,8853,8855,8857],{"class":3091,"line":3243},[3089,8851,8852],{"class":3185},"                      ArcThickness",[3089,8854,3189],{"class":3099},[3089,8856,3906],{"class":3192},[3089,8858,3292],{"class":3177},[3789,8860,8861],{},[3079,8862,8864],{"className":3168,"code":8863,"language":3170,"meta":3084,"style":3084},"\u003CGrid Background=\"White\" Width=\"150\" Height=\"150\">\n    \u003CEllipse Stroke=\"#E0E0E0\" StrokeThickness=\"10\" Width=\"100\" Height=\"100\"/>\n    \u003CPath Stroke=\"#1E90FF\" StrokeThickness=\"10\" StrokeStartLineCap=\"Round\" StrokeEndLineCap=\"Round\">\n        \u003CPath.Data>\n            \u003CPathGeometry>\n                \u003CPathFigure StartPoint=\"50,0\">\n                    \u003CArcSegment Point=\"100,50\" Size=\"50,50\" SweepDirection=\"Clockwise\" IsLargeArc=\"False\"/>\n                \u003C/PathFigure>\n            \u003C/PathGeometry>\n        \u003C/Path.Data>\n    \u003C/Path>\n    \u003CTextBlock Text=\"65%\" FontSize=\"24\" FontWeight=\"Bold\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\n\u003C/Grid>\n",[3086,8865,8866,8894,8931,8966,8975,8984,9001,9043,9052,9060,9068,9076,9117],{"__ignoreMap":3084},[3089,8867,8868,8870,8872,8874,8876,8878,8881,8883,8886,8888,8890,8892],{"class":3091,"line":3092},[3089,8869,3178],{"class":3177},[3089,8871,3557],{"class":3181},[3089,8873,3810],{"class":3185},[3089,8875,3189],{"class":3099},[3089,8877,3815],{"class":3192},[3089,8879,8880],{"class":3185}," Width",[3089,8882,3189],{"class":3099},[3089,8884,8885],{"class":3192},"\"150\"",[3089,8887,6752],{"class":3185},[3089,8889,3189],{"class":3099},[3089,8891,8885],{"class":3192},[3089,8893,3240],{"class":3177},[3089,8895,8896,8898,8901,8904,8906,8909,8912,8914,8916,8918,8920,8923,8925,8927,8929],{"class":3091,"line":3196},[3089,8897,3246],{"class":3177},[3089,8899,8900],{"class":3181},"Ellipse",[3089,8902,8903],{"class":3185}," Stroke",[3089,8905,3189],{"class":3099},[3089,8907,8908],{"class":3192},"\"#E0E0E0\"",[3089,8910,8911],{"class":3185}," StrokeThickness",[3089,8913,3189],{"class":3099},[3089,8915,3906],{"class":3192},[3089,8917,8880],{"class":3185},[3089,8919,3189],{"class":3099},[3089,8921,8922],{"class":3192},"\"100\"",[3089,8924,6752],{"class":3185},[3089,8926,3189],{"class":3099},[3089,8928,8922],{"class":3192},[3089,8930,3292],{"class":3177},[3089,8932,8933,8935,8937,8939,8941,8943,8945,8947,8949,8952,8954,8957,8960,8962,8964],{"class":3091,"line":3207},[3089,8934,3246],{"class":3177},[3089,8936,6719],{"class":3181},[3089,8938,8903],{"class":3185},[3089,8940,3189],{"class":3099},[3089,8942,4136],{"class":3192},[3089,8944,8911],{"class":3185},[3089,8946,3189],{"class":3099},[3089,8948,3906],{"class":3192},[3089,8950,8951],{"class":3185}," StrokeStartLineCap",[3089,8953,3189],{"class":3099},[3089,8955,8956],{"class":3192},"\"Round\"",[3089,8958,8959],{"class":3185}," StrokeEndLineCap",[3089,8961,3189],{"class":3099},[3089,8963,8956],{"class":3192},[3089,8965,3240],{"class":3177},[3089,8967,8968,8970,8973],{"class":3091,"line":3218},[3089,8969,3257],{"class":3177},[3089,8971,8972],{"class":3181},"Path.Data",[3089,8974,3240],{"class":3177},[3089,8976,8977,8979,8982],{"class":3091,"line":3229},[3089,8978,3268],{"class":3177},[3089,8980,8981],{"class":3181},"PathGeometry",[3089,8983,3240],{"class":3177},[3089,8985,8986,8988,8991,8994,8996,8999],{"class":3091,"line":3243},[3089,8987,3286],{"class":3177},[3089,8989,8990],{"class":3181},"PathFigure",[3089,8992,8993],{"class":3185}," StartPoint",[3089,8995,3189],{"class":3099},[3089,8997,8998],{"class":3192},"\"50,0\"",[3089,9000,3240],{"class":3177},[3089,9002,9003,9006,9009,9012,9014,9017,9020,9022,9025,9028,9030,9033,9036,9038,9041],{"class":3091,"line":3254},[3089,9004,9005],{"class":3177},"                    \u003C",[3089,9007,9008],{"class":3181},"ArcSegment",[3089,9010,9011],{"class":3185}," Point",[3089,9013,3189],{"class":3099},[3089,9015,9016],{"class":3192},"\"100,50\"",[3089,9018,9019],{"class":3185}," Size",[3089,9021,3189],{"class":3099},[3089,9023,9024],{"class":3192},"\"50,50\"",[3089,9026,9027],{"class":3185}," SweepDirection",[3089,9029,3189],{"class":3099},[3089,9031,9032],{"class":3192},"\"Clockwise\"",[3089,9034,9035],{"class":3185}," IsLargeArc",[3089,9037,3189],{"class":3099},[3089,9039,9040],{"class":3192},"\"False\"",[3089,9042,3292],{"class":3177},[3089,9044,9045,9048,9050],{"class":3091,"line":3265},[3089,9046,9047],{"class":3177},"                \u003C/",[3089,9049,8990],{"class":3181},[3089,9051,3240],{"class":3177},[3089,9053,9054,9056,9058],{"class":3091,"line":3276},[3089,9055,3314],{"class":3177},[3089,9057,8981],{"class":3181},[3089,9059,3240],{"class":3177},[3089,9061,9062,9064,9066],{"class":3091,"line":3283},[3089,9063,3324],{"class":3177},[3089,9065,8972],{"class":3181},[3089,9067,3240],{"class":3177},[3089,9069,9070,9072,9074],{"class":3091,"line":3295},[3089,9071,3334],{"class":3177},[3089,9073,6719],{"class":3181},[3089,9075,3240],{"class":3177},[3089,9077,9078,9080,9082,9084,9086,9089,9091,9093,9095,9098,9100,9103,9105,9107,9109,9111,9113,9115],{"class":3091,"line":3301},[3089,9079,3246],{"class":3177},[3089,9081,3583],{"class":3181},[3089,9083,3586],{"class":3185},[3089,9085,3189],{"class":3099},[3089,9087,9088],{"class":3192},"\"65%\"",[3089,9090,3938],{"class":3185},[3089,9092,3189],{"class":3099},[3089,9094,3603],{"class":3192},[3089,9096,9097],{"class":3185}," FontWeight",[3089,9099,3189],{"class":3099},[3089,9101,9102],{"class":3192},"\"Bold\"",[3089,9104,6392],{"class":3185},[3089,9106,3189],{"class":3099},[3089,9108,6397],{"class":3192},[3089,9110,6400],{"class":3185},[3089,9112,3189],{"class":3099},[3089,9114,6397],{"class":3192},[3089,9116,3292],{"class":3177},[3089,9118,9119,9121,9123],{"class":3091,"line":3311},[3089,9120,3344],{"class":3177},[3089,9122,3557],{"class":3181},[3089,9124,3240],{"class":3177},[2964,9126,9127,9130],{},[2983,9128,9129],{},"WaveProgressBar"," — прогрес з wave ефектом (анімована хвиля):",[3079,9132,9134],{"className":3168,"code":9133,"language":3170,"meta":3084,"style":3084},"\u003Chc:WaveProgressBar Value=\"{Binding Progress}\"\n                    Maximum=\"100\"\n                    Width=\"200\"\n                    Height=\"200\"\n                    ShowText=\"True\"\n                    WaveThickness=\"5\"\n                    WaveSpeed=\"5\"/>\n",[3086,9135,9136,9149,9158,9168,9177,9186,9196],{"__ignoreMap":3084},[3089,9137,9138,9140,9143,9145,9147],{"class":3091,"line":3092},[3089,9139,3178],{"class":3177},[3089,9141,9142],{"class":3181},"hc:WaveProgressBar",[3089,9144,6094],{"class":3185},[3089,9146,3189],{"class":3099},[3089,9148,8811],{"class":3192},[3089,9150,9151,9154,9156],{"class":3091,"line":3196},[3089,9152,9153],{"class":3185},"                    Maximum",[3089,9155,3189],{"class":3099},[3089,9157,7637],{"class":3192},[3089,9159,9160,9163,9165],{"class":3091,"line":3207},[3089,9161,9162],{"class":3185},"                    Width",[3089,9164,3189],{"class":3099},[3089,9166,9167],{"class":3192},"\"200\"\n",[3089,9169,9170,9173,9175],{"class":3091,"line":3218},[3089,9171,9172],{"class":3185},"                    Height",[3089,9174,3189],{"class":3099},[3089,9176,9167],{"class":3192},[3089,9178,9179,9182,9184],{"class":3091,"line":3229},[3089,9180,9181],{"class":3185},"                    ShowText",[3089,9183,3189],{"class":3099},[3089,9185,7411],{"class":3192},[3089,9187,9188,9191,9193],{"class":3091,"line":3243},[3089,9189,9190],{"class":3185},"                    WaveThickness",[3089,9192,3189],{"class":3099},[3089,9194,9195],{"class":3192},"\"5\"\n",[3089,9197,9198,9201,9203,9205],{"class":3091,"line":3254},[3089,9199,9200],{"class":3185},"                    WaveSpeed",[3089,9202,3189],{"class":3099},[3089,9204,6426],{"class":3192},[3089,9206,3292],{"class":3177},[2964,9208,9209],{},"WaveProgressBar створює ефект води, що наповнює контейнер — це унікальний контрол, якого немає в інших WPF бібліотеках.",[2959,9211,9213],{"id":9212},"layout-та-container-контроли","Layout та Container контроли",[2964,9215,9216],{},"HandyControl надає спеціалізовані панелі для складних layout сценаріїв.",[3000,9218,9220],{"id":9219},"panel-контроли","Panel контроли",[2964,9222,9223,9226],{},[2983,9224,9225],{},"UniformSpacingPanel"," — панель з рівномірними відступами між елементами:",[3079,9228,9230],{"className":3168,"code":9229,"language":3170,"meta":3084,"style":3084},"\u003Chc:UniformSpacingPanel Spacing=\"10\" \n                        Orientation=\"Horizontal\"\n                        HorizontalAlignment=\"Center\">\n    \u003CButton Content=\"Кнопка 1\"/>\n    \u003CButton Content=\"Кнопка 2\"/>\n    \u003CButton Content=\"Кнопка 3\"/>\n    \u003CButton Content=\"Кнопка 4\"/>\n\u003C/hc:UniformSpacingPanel>\n",[3086,9231,9232,9248,9258,9269,9284,9299,9314,9329],{"__ignoreMap":3084},[3089,9233,9234,9236,9239,9242,9244,9246],{"class":3091,"line":3092},[3089,9235,3178],{"class":3177},[3089,9237,9238],{"class":3181},"hc:UniformSpacingPanel",[3089,9240,9241],{"class":3185}," Spacing",[3089,9243,3189],{"class":3099},[3089,9245,3906],{"class":3192},[3089,9247,3526],{"class":3099},[3089,9249,9250,9253,9255],{"class":3091,"line":3196},[3089,9251,9252],{"class":3185},"                        Orientation",[3089,9254,3189],{"class":3099},[3089,9256,9257],{"class":3192},"\"Horizontal\"\n",[3089,9259,9260,9263,9265,9267],{"class":3091,"line":3207},[3089,9261,9262],{"class":3185},"                        HorizontalAlignment",[3089,9264,3189],{"class":3099},[3089,9266,6397],{"class":3192},[3089,9268,3240],{"class":3177},[3089,9270,9271,9273,9275,9277,9279,9282],{"class":3091,"line":3218},[3089,9272,3246],{"class":3177},[3089,9274,4118],{"class":3181},[3089,9276,3729],{"class":3185},[3089,9278,3189],{"class":3099},[3089,9280,9281],{"class":3192},"\"Кнопка 1\"",[3089,9283,3292],{"class":3177},[3089,9285,9286,9288,9290,9292,9294,9297],{"class":3091,"line":3229},[3089,9287,3246],{"class":3177},[3089,9289,4118],{"class":3181},[3089,9291,3729],{"class":3185},[3089,9293,3189],{"class":3099},[3089,9295,9296],{"class":3192},"\"Кнопка 2\"",[3089,9298,3292],{"class":3177},[3089,9300,9301,9303,9305,9307,9309,9312],{"class":3091,"line":3243},[3089,9302,3246],{"class":3177},[3089,9304,4118],{"class":3181},[3089,9306,3729],{"class":3185},[3089,9308,3189],{"class":3099},[3089,9310,9311],{"class":3192},"\"Кнопка 3\"",[3089,9313,3292],{"class":3177},[3089,9315,9316,9318,9320,9322,9324,9327],{"class":3091,"line":3254},[3089,9317,3246],{"class":3177},[3089,9319,4118],{"class":3181},[3089,9321,3729],{"class":3185},[3089,9323,3189],{"class":3099},[3089,9325,9326],{"class":3192},"\"Кнопка 4\"",[3089,9328,3292],{"class":3177},[3089,9330,9331,9333,9335],{"class":3091,"line":3265},[3089,9332,3344],{"class":3177},[3089,9334,9238],{"class":3181},[3089,9336,3240],{"class":3177},[2964,9338,9339],{},"На відміну від StackPanel, де потрібно встановлювати Margin для кожного елемента, UniformSpacingPanel автоматично додає однакові відступи.",[2964,9341,9342,9345],{},[2983,9343,9344],{},"FlexPanel"," — flexbox-like layout для WPF:",[3079,9347,9349],{"className":3168,"code":9348,"language":3170,"meta":3084,"style":3084},"\u003Chc:FlexPanel Direction=\"Row\" \n              Wrap=\"Wrap\"\n              JustifyContent=\"SpaceBetween\"\n              AlignItems=\"Center\">\n    \u003CButton Content=\"Item 1\" Width=\"100\"/>\n    \u003CButton Content=\"Item 2\" Width=\"150\"/>\n    \u003CButton Content=\"Item 3\" Width=\"120\"/>\n    \u003CButton Content=\"Item 4\" Width=\"100\"/>\n\u003C/hc:FlexPanel>\n",[3086,9350,9351,9368,9378,9388,9399,9420,9441,9463,9484],{"__ignoreMap":3084},[3089,9352,9353,9355,9358,9361,9363,9366],{"class":3091,"line":3092},[3089,9354,3178],{"class":3177},[3089,9356,9357],{"class":3181},"hc:FlexPanel",[3089,9359,9360],{"class":3185}," Direction",[3089,9362,3189],{"class":3099},[3089,9364,9365],{"class":3192},"\"Row\"",[3089,9367,3526],{"class":3099},[3089,9369,9370,9373,9375],{"class":3091,"line":3196},[3089,9371,9372],{"class":3185},"              Wrap",[3089,9374,3189],{"class":3099},[3089,9376,9377],{"class":3192},"\"Wrap\"\n",[3089,9379,9380,9383,9385],{"class":3091,"line":3207},[3089,9381,9382],{"class":3185},"              JustifyContent",[3089,9384,3189],{"class":3099},[3089,9386,9387],{"class":3192},"\"SpaceBetween\"\n",[3089,9389,9390,9393,9395,9397],{"class":3091,"line":3218},[3089,9391,9392],{"class":3185},"              AlignItems",[3089,9394,3189],{"class":3099},[3089,9396,6397],{"class":3192},[3089,9398,3240],{"class":3177},[3089,9400,9401,9403,9405,9407,9409,9412,9414,9416,9418],{"class":3091,"line":3229},[3089,9402,3246],{"class":3177},[3089,9404,4118],{"class":3181},[3089,9406,3729],{"class":3185},[3089,9408,3189],{"class":3099},[3089,9410,9411],{"class":3192},"\"Item 1\"",[3089,9413,8880],{"class":3185},[3089,9415,3189],{"class":3099},[3089,9417,8922],{"class":3192},[3089,9419,3292],{"class":3177},[3089,9421,9422,9424,9426,9428,9430,9433,9435,9437,9439],{"class":3091,"line":3243},[3089,9423,3246],{"class":3177},[3089,9425,4118],{"class":3181},[3089,9427,3729],{"class":3185},[3089,9429,3189],{"class":3099},[3089,9431,9432],{"class":3192},"\"Item 2\"",[3089,9434,8880],{"class":3185},[3089,9436,3189],{"class":3099},[3089,9438,8885],{"class":3192},[3089,9440,3292],{"class":3177},[3089,9442,9443,9445,9447,9449,9451,9454,9456,9458,9461],{"class":3091,"line":3254},[3089,9444,3246],{"class":3177},[3089,9446,4118],{"class":3181},[3089,9448,3729],{"class":3185},[3089,9450,3189],{"class":3099},[3089,9452,9453],{"class":3192},"\"Item 3\"",[3089,9455,8880],{"class":3185},[3089,9457,3189],{"class":3099},[3089,9459,9460],{"class":3192},"\"120\"",[3089,9462,3292],{"class":3177},[3089,9464,9465,9467,9469,9471,9473,9476,9478,9480,9482],{"class":3091,"line":3265},[3089,9466,3246],{"class":3177},[3089,9468,4118],{"class":3181},[3089,9470,3729],{"class":3185},[3089,9472,3189],{"class":3099},[3089,9474,9475],{"class":3192},"\"Item 4\"",[3089,9477,8880],{"class":3185},[3089,9479,3189],{"class":3099},[3089,9481,8922],{"class":3192},[3089,9483,3292],{"class":3177},[3089,9485,9486,9488,9490],{"class":3091,"line":3276},[3089,9487,3344],{"class":3177},[3089,9489,9357],{"class":3181},[3089,9491,3240],{"class":3177},[2964,9493,9494],{},"FlexPanel підтримує:",[3008,9496,9497,9503,9509,9515],{},[3011,9498,9499,9502],{},[3086,9500,9501],{},"Direction"," — Row, Column, RowReverse, ColumnReverse",[3011,9504,9505,9508],{},[3086,9506,9507],{},"Wrap"," — NoWrap, Wrap, WrapReverse",[3011,9510,9511,9514],{},[3086,9512,9513],{},"JustifyContent"," — FlexStart, FlexEnd, Center, SpaceBetween, SpaceAround",[3011,9516,9517,9520],{},[3086,9518,9519],{},"AlignItems"," — FlexStart, FlexEnd, Center, Stretch",[2964,9522,9523,9526],{},[2983,9524,9525],{},"WaterfallPanel"," — waterfall/masonry layout (як Pinterest):",[3079,9528,9530],{"className":3168,"code":9529,"language":3170,"meta":3084,"style":3084},"\u003Chc:WaterfallPanel Groups=\"3\" \n                   DesiredLength=\"200\"\n                   AutoGroup=\"True\">\n    \u003CBorder Background=\"LightBlue\" Height=\"150\">\n        \u003CTextBlock Text=\"Item 1\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\n    \u003C/Border>\n    \u003CBorder Background=\"LightGreen\" Height=\"200\">\n        \u003CTextBlock Text=\"Item 2\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\n    \u003C/Border>\n    \u003CBorder Background=\"LightCoral\" Height=\"180\">\n        \u003CTextBlock Text=\"Item 3\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"/>\n    \u003C/Border>\n    \u003C!-- Більше елементів... -->\n\u003C/hc:WaterfallPanel>\n",[3086,9531,9532,9549,9558,9569,9590,9616,9624,9646,9672,9680,9702,9728,9736,9741],{"__ignoreMap":3084},[3089,9533,9534,9536,9539,9542,9544,9547],{"class":3091,"line":3092},[3089,9535,3178],{"class":3177},[3089,9537,9538],{"class":3181},"hc:WaterfallPanel",[3089,9540,9541],{"class":3185}," Groups",[3089,9543,3189],{"class":3099},[3089,9545,9546],{"class":3192},"\"3\"",[3089,9548,3526],{"class":3099},[3089,9550,9551,9554,9556],{"class":3091,"line":3196},[3089,9552,9553],{"class":3185},"                   DesiredLength",[3089,9555,3189],{"class":3099},[3089,9557,9167],{"class":3192},[3089,9559,9560,9563,9565,9567],{"class":3091,"line":3207},[3089,9561,9562],{"class":3185},"                   AutoGroup",[3089,9564,3189],{"class":3099},[3089,9566,7190],{"class":3192},[3089,9568,3240],{"class":3177},[3089,9570,9571,9573,9575,9577,9579,9582,9584,9586,9588],{"class":3091,"line":3218},[3089,9572,3246],{"class":3177},[3089,9574,3882],{"class":3181},[3089,9576,3810],{"class":3185},[3089,9578,3189],{"class":3099},[3089,9580,9581],{"class":3192},"\"LightBlue\"",[3089,9583,6752],{"class":3185},[3089,9585,3189],{"class":3099},[3089,9587,8885],{"class":3192},[3089,9589,3240],{"class":3177},[3089,9591,9592,9594,9596,9598,9600,9602,9604,9606,9608,9610,9612,9614],{"class":3091,"line":3229},[3089,9593,3257],{"class":3177},[3089,9595,3583],{"class":3181},[3089,9597,3586],{"class":3185},[3089,9599,3189],{"class":3099},[3089,9601,9411],{"class":3192},[3089,9603,6392],{"class":3185},[3089,9605,3189],{"class":3099},[3089,9607,6397],{"class":3192},[3089,9609,6400],{"class":3185},[3089,9611,3189],{"class":3099},[3089,9613,6397],{"class":3192},[3089,9615,3292],{"class":3177},[3089,9617,9618,9620,9622],{"class":3091,"line":3243},[3089,9619,3334],{"class":3177},[3089,9621,3882],{"class":3181},[3089,9623,3240],{"class":3177},[3089,9625,9626,9628,9630,9632,9634,9637,9639,9641,9644],{"class":3091,"line":3254},[3089,9627,3246],{"class":3177},[3089,9629,3882],{"class":3181},[3089,9631,3810],{"class":3185},[3089,9633,3189],{"class":3099},[3089,9635,9636],{"class":3192},"\"LightGreen\"",[3089,9638,6752],{"class":3185},[3089,9640,3189],{"class":3099},[3089,9642,9643],{"class":3192},"\"200\"",[3089,9645,3240],{"class":3177},[3089,9647,9648,9650,9652,9654,9656,9658,9660,9662,9664,9666,9668,9670],{"class":3091,"line":3265},[3089,9649,3257],{"class":3177},[3089,9651,3583],{"class":3181},[3089,9653,3586],{"class":3185},[3089,9655,3189],{"class":3099},[3089,9657,9432],{"class":3192},[3089,9659,6392],{"class":3185},[3089,9661,3189],{"class":3099},[3089,9663,6397],{"class":3192},[3089,9665,6400],{"class":3185},[3089,9667,3189],{"class":3099},[3089,9669,6397],{"class":3192},[3089,9671,3292],{"class":3177},[3089,9673,9674,9676,9678],{"class":3091,"line":3276},[3089,9675,3334],{"class":3177},[3089,9677,3882],{"class":3181},[3089,9679,3240],{"class":3177},[3089,9681,9682,9684,9686,9688,9690,9693,9695,9697,9700],{"class":3091,"line":3283},[3089,9683,3246],{"class":3177},[3089,9685,3882],{"class":3181},[3089,9687,3810],{"class":3185},[3089,9689,3189],{"class":3099},[3089,9691,9692],{"class":3192},"\"LightCoral\"",[3089,9694,6752],{"class":3185},[3089,9696,3189],{"class":3099},[3089,9698,9699],{"class":3192},"\"180\"",[3089,9701,3240],{"class":3177},[3089,9703,9704,9706,9708,9710,9712,9714,9716,9718,9720,9722,9724,9726],{"class":3091,"line":3295},[3089,9705,3257],{"class":3177},[3089,9707,3583],{"class":3181},[3089,9709,3586],{"class":3185},[3089,9711,3189],{"class":3099},[3089,9713,9453],{"class":3192},[3089,9715,6392],{"class":3185},[3089,9717,3189],{"class":3099},[3089,9719,6397],{"class":3192},[3089,9721,6400],{"class":3185},[3089,9723,3189],{"class":3099},[3089,9725,6397],{"class":3192},[3089,9727,3292],{"class":3177},[3089,9729,9730,9732,9734],{"class":3091,"line":3301},[3089,9731,3334],{"class":3177},[3089,9733,3882],{"class":3181},[3089,9735,3240],{"class":3177},[3089,9737,9738],{"class":3091,"line":3311},[3089,9739,9740],{"class":3279},"    \u003C!-- Більше елементів... -->\n",[3089,9742,9743,9745,9747],{"class":3091,"line":3321},[3089,9744,3344],{"class":3177},[3089,9746,9538],{"class":3181},[3089,9748,3240],{"class":3177},[2964,9750,9751],{},"WaterfallPanel автоматично розподіляє елементи по колонках, мінімізуючи порожній простір.",[2964,9753,9754,9757],{},[2983,9755,9756],{},"RunCanvas"," — canvas для drag-and-drop сценаріїв:",[3079,9759,9761],{"className":3168,"code":9760,"language":3170,"meta":3084,"style":3084},"\u003Chc:RunCanvas Background=\"WhiteSmoke\">\n    \u003CButton Content=\"Перетягни мене\" \n            Canvas.Left=\"50\" \n            Canvas.Top=\"50\"\n            hc:DragElement.IsDraggable=\"True\"/>\n\u003C/hc:RunCanvas>\n",[3086,9762,9763,9779,9794,9806,9816,9827],{"__ignoreMap":3084},[3089,9764,9765,9767,9770,9772,9774,9777],{"class":3091,"line":3092},[3089,9766,3178],{"class":3177},[3089,9768,9769],{"class":3181},"hc:RunCanvas",[3089,9771,3810],{"class":3185},[3089,9773,3189],{"class":3099},[3089,9775,9776],{"class":3192},"\"WhiteSmoke\"",[3089,9778,3240],{"class":3177},[3089,9780,9781,9783,9785,9787,9789,9792],{"class":3091,"line":3196},[3089,9782,3246],{"class":3177},[3089,9784,4118],{"class":3181},[3089,9786,3729],{"class":3185},[3089,9788,3189],{"class":3099},[3089,9790,9791],{"class":3192},"\"Перетягни мене\"",[3089,9793,3526],{"class":3099},[3089,9795,9796,9799,9801,9804],{"class":3091,"line":3207},[3089,9797,9798],{"class":3185},"            Canvas.Left",[3089,9800,3189],{"class":3099},[3089,9802,9803],{"class":3192},"\"50\"",[3089,9805,3526],{"class":3099},[3089,9807,9808,9811,9813],{"class":3091,"line":3218},[3089,9809,9810],{"class":3185},"            Canvas.Top",[3089,9812,3189],{"class":3099},[3089,9814,9815],{"class":3192},"\"50\"\n",[3089,9817,9818,9821,9823,9825],{"class":3091,"line":3229},[3089,9819,9820],{"class":3185},"            hc:DragElement.IsDraggable",[3089,9822,3189],{"class":3099},[3089,9824,7190],{"class":3192},[3089,9826,3292],{"class":3177},[3089,9828,9829,9831,9833],{"class":3091,"line":3243},[3089,9830,3344],{"class":3177},[3089,9832,9769],{"class":3181},[3089,9834,3240],{"class":3177},[3000,9836,9838],{"id":9837},"card-та-group-контроли","Card та Group контроли",[2964,9840,9841,9844],{},[2983,9842,9843],{},"Card"," — контейнер з elevation (тінь) для групування контенту:",[3079,9846,9848],{"className":3168,"code":9847,"language":3170,"meta":3084,"style":3084},"\u003Chc:SimplePanel Margin=\"20\">\n    \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n             Padding=\"20\"\n             Margin=\"10\">\n        \u003CStackPanel>\n            \u003CTextBlock Text=\"Статистика\" \n                       FontSize=\"18\" \n                       FontWeight=\"Bold\"\n                       Margin=\"0,0,0,10\"/>\n            \u003CTextBlock Text=\"Користувачів: 1,234\"/>\n            \u003CTextBlock Text=\"Активних: 567\"/>\n            \u003CTextBlock Text=\"Нових сьогодні: 89\"/>\n        \u003C/StackPanel>\n    \u003C/hc:Card>\n\u003C/hc:SimplePanel>\n",[3086,9849,9850,9865,9882,9892,9903,9911,9926,9937,9945,9955,9970,9985,10000,10008,10016],{"__ignoreMap":3084},[3089,9851,9852,9854,9857,9859,9861,9863],{"class":3091,"line":3092},[3089,9853,3178],{"class":3177},[3089,9855,9856],{"class":3181},"hc:SimplePanel",[3089,9858,3560],{"class":3185},[3089,9860,3189],{"class":3099},[3089,9862,3565],{"class":3192},[3089,9864,3240],{"class":3177},[3089,9866,9867,9869,9872,9875,9877,9880],{"class":3091,"line":3196},[3089,9868,3246],{"class":3177},[3089,9870,9871],{"class":3181},"hc:Card",[3089,9873,9874],{"class":3185}," Effect",[3089,9876,3189],{"class":3099},[3089,9878,9879],{"class":3192},"\"{StaticResource EffectShadow2}\"",[3089,9881,3526],{"class":3099},[3089,9883,9884,9887,9889],{"class":3091,"line":3207},[3089,9885,9886],{"class":3185},"             Padding",[3089,9888,3189],{"class":3099},[3089,9890,9891],{"class":3192},"\"20\"\n",[3089,9893,9894,9897,9899,9901],{"class":3091,"line":3218},[3089,9895,9896],{"class":3185},"             Margin",[3089,9898,3189],{"class":3099},[3089,9900,3906],{"class":3192},[3089,9902,3240],{"class":3177},[3089,9904,9905,9907,9909],{"class":3091,"line":3229},[3089,9906,3257],{"class":3177},[3089,9908,3574],{"class":3181},[3089,9910,3240],{"class":3177},[3089,9912,9913,9915,9917,9919,9921,9924],{"class":3091,"line":3243},[3089,9914,3268],{"class":3177},[3089,9916,3583],{"class":3181},[3089,9918,3586],{"class":3185},[3089,9920,3189],{"class":3099},[3089,9922,9923],{"class":3192},"\"Статистика\"",[3089,9925,3526],{"class":3099},[3089,9927,9928,9930,9932,9935],{"class":3091,"line":3254},[3089,9929,3598],{"class":3185},[3089,9931,3189],{"class":3099},[3089,9933,9934],{"class":3192},"\"18\"",[3089,9936,3526],{"class":3099},[3089,9938,9939,9941,9943],{"class":3091,"line":3265},[3089,9940,3610],{"class":3185},[3089,9942,3189],{"class":3099},[3089,9944,3615],{"class":3192},[3089,9946,9947,9949,9951,9953],{"class":3091,"line":3276},[3089,9948,3620],{"class":3185},[3089,9950,3189],{"class":3099},[3089,9952,3668],{"class":3192},[3089,9954,3292],{"class":3177},[3089,9956,9957,9959,9961,9963,9965,9968],{"class":3091,"line":3283},[3089,9958,3268],{"class":3177},[3089,9960,3583],{"class":3181},[3089,9962,3586],{"class":3185},[3089,9964,3189],{"class":3099},[3089,9966,9967],{"class":3192},"\"Користувачів: 1,234\"",[3089,9969,3292],{"class":3177},[3089,9971,9972,9974,9976,9978,9980,9983],{"class":3091,"line":3295},[3089,9973,3268],{"class":3177},[3089,9975,3583],{"class":3181},[3089,9977,3586],{"class":3185},[3089,9979,3189],{"class":3099},[3089,9981,9982],{"class":3192},"\"Активних: 567\"",[3089,9984,3292],{"class":3177},[3089,9986,9987,9989,9991,9993,9995,9998],{"class":3091,"line":3301},[3089,9988,3268],{"class":3177},[3089,9990,3583],{"class":3181},[3089,9992,3586],{"class":3185},[3089,9994,3189],{"class":3099},[3089,9996,9997],{"class":3192},"\"Нових сьогодні: 89\"",[3089,9999,3292],{"class":3177},[3089,10001,10002,10004,10006],{"class":3091,"line":3311},[3089,10003,3324],{"class":3177},[3089,10005,3574],{"class":3181},[3089,10007,3240],{"class":3177},[3089,10009,10010,10012,10014],{"class":3091,"line":3321},[3089,10011,3334],{"class":3177},[3089,10013,9871],{"class":3181},[3089,10015,3240],{"class":3177},[3089,10017,10018,10020,10022],{"class":3091,"line":3331},[3089,10019,3344],{"class":3177},[3089,10021,9856],{"class":3181},[3089,10023,3240],{"class":3177},[3789,10025,10026],{},[3079,10027,10029],{"className":3168,"code":10028,"language":3170,"meta":3084,"style":3084},"\u003CGrid Background=\"#F5F5F5\" Padding=\"20\">\n    \u003CBorder Background=\"White\" \n            Padding=\"20\" \n            CornerRadius=\"4\"\n            Effect=\"{StaticResource EffectShadow2}\">\n        \u003CStackPanel>\n            \u003CTextBlock Text=\"Статистика\" \n                       FontSize=\"18\" \n                       FontWeight=\"Bold\"\n                       Margin=\"0,0,0,10\"/>\n            \u003CTextBlock Text=\"Користувачів: 1,234\" Margin=\"0,0,0,5\"/>\n            \u003CTextBlock Text=\"Активних: 567\" Margin=\"0,0,0,5\"/>\n            \u003CTextBlock Text=\"Нових сьогодні: 89\"/>\n        \u003C/StackPanel>\n    \u003C/Border>\n\u003C/Grid>\n",[3086,10030,10031,10052,10066,10077,10087,10098,10106,10120,10130,10138,10148,10168,10188,10202,10210,10218],{"__ignoreMap":3084},[3089,10032,10033,10035,10037,10039,10041,10044,10046,10048,10050],{"class":3091,"line":3092},[3089,10034,3178],{"class":3177},[3089,10036,3557],{"class":3181},[3089,10038,3810],{"class":3185},[3089,10040,3189],{"class":3099},[3089,10042,10043],{"class":3192},"\"#F5F5F5\"",[3089,10045,3901],{"class":3185},[3089,10047,3189],{"class":3099},[3089,10049,3565],{"class":3192},[3089,10051,3240],{"class":3177},[3089,10053,10054,10056,10058,10060,10062,10064],{"class":3091,"line":3196},[3089,10055,3246],{"class":3177},[3089,10057,3882],{"class":3181},[3089,10059,3810],{"class":3185},[3089,10061,3189],{"class":3099},[3089,10063,3815],{"class":3192},[3089,10065,3526],{"class":3099},[3089,10067,10068,10071,10073,10075],{"class":3091,"line":3207},[3089,10069,10070],{"class":3185},"            Padding",[3089,10072,3189],{"class":3099},[3089,10074,3565],{"class":3192},[3089,10076,3526],{"class":3099},[3089,10078,10079,10082,10084],{"class":3091,"line":3218},[3089,10080,10081],{"class":3185},"            CornerRadius",[3089,10083,3189],{"class":3099},[3089,10085,10086],{"class":3192},"\"4\"\n",[3089,10088,10089,10092,10094,10096],{"class":3091,"line":3229},[3089,10090,10091],{"class":3185},"            Effect",[3089,10093,3189],{"class":3099},[3089,10095,9879],{"class":3192},[3089,10097,3240],{"class":3177},[3089,10099,10100,10102,10104],{"class":3091,"line":3243},[3089,10101,3257],{"class":3177},[3089,10103,3574],{"class":3181},[3089,10105,3240],{"class":3177},[3089,10107,10108,10110,10112,10114,10116,10118],{"class":3091,"line":3254},[3089,10109,3268],{"class":3177},[3089,10111,3583],{"class":3181},[3089,10113,3586],{"class":3185},[3089,10115,3189],{"class":3099},[3089,10117,9923],{"class":3192},[3089,10119,3526],{"class":3099},[3089,10121,10122,10124,10126,10128],{"class":3091,"line":3265},[3089,10123,3598],{"class":3185},[3089,10125,3189],{"class":3099},[3089,10127,9934],{"class":3192},[3089,10129,3526],{"class":3099},[3089,10131,10132,10134,10136],{"class":3091,"line":3276},[3089,10133,3610],{"class":3185},[3089,10135,3189],{"class":3099},[3089,10137,3615],{"class":3192},[3089,10139,10140,10142,10144,10146],{"class":3091,"line":3283},[3089,10141,3620],{"class":3185},[3089,10143,3189],{"class":3099},[3089,10145,3668],{"class":3192},[3089,10147,3292],{"class":3177},[3089,10149,10150,10152,10154,10156,10158,10160,10162,10164,10166],{"class":3091,"line":3295},[3089,10151,3268],{"class":3177},[3089,10153,3583],{"class":3181},[3089,10155,3586],{"class":3185},[3089,10157,3189],{"class":3099},[3089,10159,9967],{"class":3192},[3089,10161,3560],{"class":3185},[3089,10163,3189],{"class":3099},[3089,10165,3958],{"class":3192},[3089,10167,3292],{"class":3177},[3089,10169,10170,10172,10174,10176,10178,10180,10182,10184,10186],{"class":3091,"line":3301},[3089,10171,3268],{"class":3177},[3089,10173,3583],{"class":3181},[3089,10175,3586],{"class":3185},[3089,10177,3189],{"class":3099},[3089,10179,9982],{"class":3192},[3089,10181,3560],{"class":3185},[3089,10183,3189],{"class":3099},[3089,10185,3958],{"class":3192},[3089,10187,3292],{"class":3177},[3089,10189,10190,10192,10194,10196,10198,10200],{"class":3091,"line":3311},[3089,10191,3268],{"class":3177},[3089,10193,3583],{"class":3181},[3089,10195,3586],{"class":3185},[3089,10197,3189],{"class":3099},[3089,10199,9997],{"class":3192},[3089,10201,3292],{"class":3177},[3089,10203,10204,10206,10208],{"class":3091,"line":3321},[3089,10205,3324],{"class":3177},[3089,10207,3574],{"class":3181},[3089,10209,3240],{"class":3177},[3089,10211,10212,10214,10216],{"class":3091,"line":3331},[3089,10213,3334],{"class":3177},[3089,10215,3882],{"class":3181},[3089,10217,3240],{"class":3177},[3089,10219,10220,10222,10224],{"class":3091,"line":3341},[3089,10221,3344],{"class":3177},[3089,10223,3557],{"class":3181},[3089,10225,3240],{"class":3177},[2964,10227,10228],{},"HandyControl надає кілька рівнів elevation через ефекти тіні:",[3008,10230,10231,10237,10243,10249,10255],{},[3011,10232,10233,10236],{},[3086,10234,10235],{},"EffectShadow1"," — легка тінь",[3011,10238,10239,10242],{},[3086,10240,10241],{},"EffectShadow2"," — середня тінь",[3011,10244,10245,10248],{},[3086,10246,10247],{},"EffectShadow3"," — сильна тінь",[3011,10250,10251,10254],{},[3086,10252,10253],{},"EffectShadow4"," — дуже сильна тінь",[3011,10256,10257,10260],{},[3086,10258,10259],{},"EffectShadow5"," — максимальна тінь",[2964,10262,10263,10266],{},[2983,10264,10265],{},"GroupBox"," — покращена група з кращим виглядом:",[3079,10268,10270],{"className":3168,"code":10269,"language":3170,"meta":3084,"style":3084},"\u003Chc:GroupBox Header=\"Налаштування профілю\" Margin=\"10\">\n    \u003CStackPanel Margin=\"10\">\n        \u003Chc:TextBox hc:InfoElement.Title=\"Ім'я\" Margin=\"0,0,0,10\"/>\n        \u003Chc:TextBox hc:InfoElement.Title=\"Email\" Margin=\"0,0,0,10\"/>\n        \u003Chc:DatePicker hc:InfoElement.Title=\"Дата народження\"/>\n    \u003C/StackPanel>\n\u003C/hc:GroupBox>\n",[3086,10271,10272,10295,10309,10330,10351,10366,10374],{"__ignoreMap":3084},[3089,10273,10274,10276,10279,10282,10284,10287,10289,10291,10293],{"class":3091,"line":3092},[3089,10275,3178],{"class":3177},[3089,10277,10278],{"class":3181},"hc:GroupBox",[3089,10280,10281],{"class":3185}," Header",[3089,10283,3189],{"class":3099},[3089,10285,10286],{"class":3192},"\"Налаштування профілю\"",[3089,10288,3560],{"class":3185},[3089,10290,3189],{"class":3099},[3089,10292,3906],{"class":3192},[3089,10294,3240],{"class":3177},[3089,10296,10297,10299,10301,10303,10305,10307],{"class":3091,"line":3196},[3089,10298,3246],{"class":3177},[3089,10300,3574],{"class":3181},[3089,10302,3560],{"class":3185},[3089,10304,3189],{"class":3099},[3089,10306,3906],{"class":3192},[3089,10308,3240],{"class":3177},[3089,10310,10311,10313,10315,10317,10319,10322,10324,10326,10328],{"class":3091,"line":3207},[3089,10312,3257],{"class":3177},[3089,10314,3639],{"class":3181},[3089,10316,3642],{"class":3185},[3089,10318,3189],{"class":3099},[3089,10320,10321],{"class":3192},"\"Ім'я\"",[3089,10323,3560],{"class":3185},[3089,10325,3189],{"class":3099},[3089,10327,3668],{"class":3192},[3089,10329,3292],{"class":3177},[3089,10331,10332,10334,10336,10338,10340,10343,10345,10347,10349],{"class":3091,"line":3218},[3089,10333,3257],{"class":3177},[3089,10335,3639],{"class":3181},[3089,10337,3642],{"class":3185},[3089,10339,3189],{"class":3099},[3089,10341,10342],{"class":3192},"\"Email\"",[3089,10344,3560],{"class":3185},[3089,10346,3189],{"class":3099},[3089,10348,3668],{"class":3192},[3089,10350,3292],{"class":3177},[3089,10352,10353,10355,10357,10359,10361,10364],{"class":3091,"line":3229},[3089,10354,3257],{"class":3177},[3089,10356,8351],{"class":3181},[3089,10358,3642],{"class":3185},[3089,10360,3189],{"class":3099},[3089,10362,10363],{"class":3192},"\"Дата народження\"",[3089,10365,3292],{"class":3177},[3089,10367,10368,10370,10372],{"class":3091,"line":3243},[3089,10369,3334],{"class":3177},[3089,10371,3574],{"class":3181},[3089,10373,3240],{"class":3177},[3089,10375,10376,10378,10380],{"class":3091,"line":3254},[3089,10377,3344],{"class":3177},[3089,10379,10278],{"class":3181},[3089,10381,3240],{"class":3177},[2964,10383,10384,10387],{},[2983,10385,10386],{},"Expander"," — розгортаємий контейнер:",[3079,10389,10391],{"className":3168,"code":10390,"language":3170,"meta":3084,"style":3084},"\u003Chc:Expander Header=\"Додаткові налаштування\" \n             IsExpanded=\"False\"\n             Margin=\"10\">\n    \u003CStackPanel Margin=\"10\">\n        \u003Chc:CheckBox Content=\"Увімкнути debug режим\"/>\n        \u003Chc:CheckBox Content=\"Показувати технічну інформацію\"/>\n        \u003Chc:NumericUpDown hc:InfoElement.Title=\"Timeout (секунди)\" Value=\"30\"/>\n    \u003C/StackPanel>\n\u003C/hc:Expander>\n",[3086,10392,10393,10409,10419,10429,10443,10458,10473,10495,10503],{"__ignoreMap":3084},[3089,10394,10395,10397,10400,10402,10404,10407],{"class":3091,"line":3092},[3089,10396,3178],{"class":3177},[3089,10398,10399],{"class":3181},"hc:Expander",[3089,10401,10281],{"class":3185},[3089,10403,3189],{"class":3099},[3089,10405,10406],{"class":3192},"\"Додаткові налаштування\"",[3089,10408,3526],{"class":3099},[3089,10410,10411,10414,10416],{"class":3091,"line":3196},[3089,10412,10413],{"class":3185},"             IsExpanded",[3089,10415,3189],{"class":3099},[3089,10417,10418],{"class":3192},"\"False\"\n",[3089,10420,10421,10423,10425,10427],{"class":3091,"line":3207},[3089,10422,9896],{"class":3185},[3089,10424,3189],{"class":3099},[3089,10426,3906],{"class":3192},[3089,10428,3240],{"class":3177},[3089,10430,10431,10433,10435,10437,10439,10441],{"class":3091,"line":3218},[3089,10432,3246],{"class":3177},[3089,10434,3574],{"class":3181},[3089,10436,3560],{"class":3185},[3089,10438,3189],{"class":3099},[3089,10440,3906],{"class":3192},[3089,10442,3240],{"class":3177},[3089,10444,10445,10447,10449,10451,10453,10456],{"class":3091,"line":3229},[3089,10446,3257],{"class":3177},[3089,10448,7267],{"class":3181},[3089,10450,3729],{"class":3185},[3089,10452,3189],{"class":3099},[3089,10454,10455],{"class":3192},"\"Увімкнути debug режим\"",[3089,10457,3292],{"class":3177},[3089,10459,10460,10462,10464,10466,10468,10471],{"class":3091,"line":3243},[3089,10461,3257],{"class":3177},[3089,10463,7267],{"class":3181},[3089,10465,3729],{"class":3185},[3089,10467,3189],{"class":3099},[3089,10469,10470],{"class":3192},"\"Показувати технічну інформацію\"",[3089,10472,3292],{"class":3177},[3089,10474,10475,10477,10479,10481,10483,10486,10488,10490,10493],{"class":3091,"line":3254},[3089,10476,3257],{"class":3177},[3089,10478,7600],{"class":3181},[3089,10480,3642],{"class":3185},[3089,10482,3189],{"class":3099},[3089,10484,10485],{"class":3192},"\"Timeout (секунди)\"",[3089,10487,6094],{"class":3185},[3089,10489,3189],{"class":3099},[3089,10491,10492],{"class":3192},"\"30\"",[3089,10494,3292],{"class":3177},[3089,10496,10497,10499,10501],{"class":3091,"line":3265},[3089,10498,3334],{"class":3177},[3089,10500,3574],{"class":3181},[3089,10502,3240],{"class":3177},[3089,10504,10505,10507,10509],{"class":3091,"line":3276},[3089,10506,3344],{"class":3177},[3089,10508,10399],{"class":3181},[3089,10510,3240],{"class":3177},[2964,10512,10513],{},"Expander корисний для приховування рідко використовуваних налаштувань або додаткової інформації.",[3000,10515,10517],{"id":10516},"scrollviewer-покращення","ScrollViewer покращення",[2964,10519,10520],{},"HandyControl покращує стандартний ScrollViewer, додаючи smooth scrolling та кращий вигляд scrollbar.",[3079,10522,10524],{"className":3168,"code":10523,"language":3170,"meta":3084,"style":3084},"\u003Chc:ScrollViewer Height=\"300\">\n    \u003CStackPanel>\n        \u003C!-- Багато контенту... -->\n    \u003C/StackPanel>\n\u003C/hc:ScrollViewer>\n",[3086,10525,10526,10542,10550,10555,10563],{"__ignoreMap":3084},[3089,10527,10528,10530,10533,10535,10537,10540],{"class":3091,"line":3092},[3089,10529,3178],{"class":3177},[3089,10531,10532],{"class":3181},"hc:ScrollViewer",[3089,10534,6752],{"class":3185},[3089,10536,3189],{"class":3099},[3089,10538,10539],{"class":3192},"\"300\"",[3089,10541,3240],{"class":3177},[3089,10543,10544,10546,10548],{"class":3091,"line":3196},[3089,10545,3246],{"class":3177},[3089,10547,3574],{"class":3181},[3089,10549,3240],{"class":3177},[3089,10551,10552],{"class":3091,"line":3207},[3089,10553,10554],{"class":3279},"        \u003C!-- Багато контенту... -->\n",[3089,10556,10557,10559,10561],{"class":3091,"line":3218},[3089,10558,3334],{"class":3177},[3089,10560,3574],{"class":3181},[3089,10562,3240],{"class":3177},[3089,10564,10565,10567,10569],{"class":3091,"line":3229},[3089,10566,3344],{"class":3177},[3089,10568,10532],{"class":3181},[3089,10570,3240],{"class":3177},[2964,10572,10573],{},"Smooth scrolling автоматично застосовується до всіх ScrollViewer у додатку після підключення HandyControl тем.",[2964,10575,10576,10579],{},[2983,10577,10578],{},"ScrollViewerAttach"," — attached behaviors для додаткових можливостей:",[3079,10581,10583],{"className":3168,"code":10582,"language":3170,"meta":3084,"style":3084},"\u003CScrollViewer hc:ScrollViewerAttach.AutoHide=\"True\"\n              hc:ScrollViewerAttach.Orientation=\"Vertical\">\n    \u003C!-- Контент -->\n\u003C/ScrollViewer>\n",[3086,10584,10585,10599,10611,10616],{"__ignoreMap":3084},[3089,10586,10587,10589,10592,10595,10597],{"class":3091,"line":3092},[3089,10588,3178],{"class":3177},[3089,10590,10591],{"class":3181},"ScrollViewer",[3089,10593,10594],{"class":3185}," hc:ScrollViewerAttach.AutoHide",[3089,10596,3189],{"class":3099},[3089,10598,7411],{"class":3192},[3089,10600,10601,10604,10606,10609],{"class":3091,"line":3196},[3089,10602,10603],{"class":3185},"              hc:ScrollViewerAttach.Orientation",[3089,10605,3189],{"class":3099},[3089,10607,10608],{"class":3192},"\"Vertical\"",[3089,10610,3240],{"class":3177},[3089,10612,10613],{"class":3091,"line":3207},[3089,10614,10615],{"class":3279},"    \u003C!-- Контент -->\n",[3089,10617,10618,10620,10622],{"class":3091,"line":3218},[3089,10619,3344],{"class":3177},[3089,10621,10591],{"class":3181},[3089,10623,3240],{"class":3177},[3008,10625,10626,10632],{},[3011,10627,10628,10631],{},[3086,10629,10630],{},"AutoHide=\"True\""," — scrollbar автоматично ховається, коли не використовується",[3011,10633,10634,10637],{},[3086,10635,10636],{},"Orientation"," — напрямок scroll",[2959,10639,10641],{"id":10640},"навігація-та-window-контроли","Навігація та Window контроли",[3000,10643,10645],{"id":10644},"window-контроли","Window контроли",[2964,10647,10648],{},"HandyControl надає кілька типів вікон з різними ефектами та можливостями.",[2964,10650,10651,10654],{},[2983,10652,10653],{},"Window"," — базове покращене вікно:",[3079,10656,10658],{"className":3168,"code":10657,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"MyApp.MainWindow\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n           Title=\"Мій додаток\"\n           Height=\"600\"\n           Width=\"900\"\n           WindowStartupLocation=\"CenterScreen\"\n           Icon=\"Assets/icon.ico\">\n    \u003C!-- Контент -->\n\u003C/hc:Window>\n",[3086,10659,10660,10673,10681,10690,10699,10708,10718,10730,10734],{"__ignoreMap":3084},[3089,10661,10662,10664,10666,10668,10670],{"class":3091,"line":3092},[3089,10663,3178],{"class":3177},[3089,10665,3479],{"class":3181},[3089,10667,3186],{"class":3185},[3089,10669,3189],{"class":3099},[3089,10671,10672],{"class":3192},"\"MyApp.MainWindow\"\n",[3089,10674,10675,10677,10679],{"class":3091,"line":3196},[3089,10676,3509],{"class":3185},[3089,10678,3189],{"class":3099},[3089,10680,3226],{"class":3192},[3089,10682,10683,10685,10687],{"class":3091,"line":3207},[3089,10684,3518],{"class":3185},[3089,10686,3189],{"class":3099},[3089,10688,10689],{"class":3192},"\"Мій додаток\"\n",[3089,10691,10692,10694,10696],{"class":3091,"line":3218},[3089,10693,3531],{"class":3185},[3089,10695,3189],{"class":3099},[3089,10697,10698],{"class":3192},"\"600\"\n",[3089,10700,10701,10703,10705],{"class":3091,"line":3229},[3089,10702,3543],{"class":3185},[3089,10704,3189],{"class":3099},[3089,10706,10707],{"class":3192},"\"900\"\n",[3089,10709,10710,10713,10715],{"class":3091,"line":3243},[3089,10711,10712],{"class":3185},"           WindowStartupLocation",[3089,10714,3189],{"class":3099},[3089,10716,10717],{"class":3192},"\"CenterScreen\"\n",[3089,10719,10720,10723,10725,10728],{"class":3091,"line":3254},[3089,10721,10722],{"class":3185},"           Icon",[3089,10724,3189],{"class":3099},[3089,10726,10727],{"class":3192},"\"Assets/icon.ico\"",[3089,10729,3240],{"class":3177},[3089,10731,10732],{"class":3091,"line":3265},[3089,10733,10615],{"class":3279},[3089,10735,10736,10738,10740],{"class":3091,"line":3276},[3089,10737,3344],{"class":3177},[3089,10739,3479],{"class":3181},[3089,10741,3240],{"class":3177},[2964,10743,10744],{},"HandyControl Window автоматично додає:",[3008,10746,10747,10750,10753,10756],{},[3011,10748,10749],{},"Власний title bar з кнопками мінімізації/максимізації/закриття",[3011,10751,10752],{},"Підтримку тем (світла/темна)",[3011,10754,10755],{},"Можливість перетягування вікна",[3011,10757,10758],{},"Resize handles",[2964,10760,10761,10764],{},[2983,10762,10763],{},"GlowWindow"," — вікно з glow ефектом (світіння навколо вікна):",[3079,10766,10768],{"className":3168,"code":10767,"language":3170,"meta":3084,"style":3084},"\u003Chc:GlowWindow x:Class=\"MyApp.MainWindow\"\n               xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n               Title=\"Glow Window\"\n               GlowColor=\"#1E90FF\"\n               ActiveGlowColor=\"#FF6B35\"\n               NonActiveGlowColor=\"#CCCCCC\">\n    \u003C!-- Контент -->\n\u003C/hc:GlowWindow>\n",[3086,10769,10770,10783,10792,10802,10812,10822,10834,10838],{"__ignoreMap":3084},[3089,10771,10772,10774,10777,10779,10781],{"class":3091,"line":3092},[3089,10773,3178],{"class":3177},[3089,10775,10776],{"class":3181},"hc:GlowWindow",[3089,10778,3186],{"class":3185},[3089,10780,3189],{"class":3099},[3089,10782,10672],{"class":3192},[3089,10784,10785,10788,10790],{"class":3091,"line":3196},[3089,10786,10787],{"class":3185},"               xmlns:hc",[3089,10789,3189],{"class":3099},[3089,10791,3226],{"class":3192},[3089,10793,10794,10797,10799],{"class":3091,"line":3207},[3089,10795,10796],{"class":3185},"               Title",[3089,10798,3189],{"class":3099},[3089,10800,10801],{"class":3192},"\"Glow Window\"\n",[3089,10803,10804,10807,10809],{"class":3091,"line":3218},[3089,10805,10806],{"class":3185},"               GlowColor",[3089,10808,3189],{"class":3099},[3089,10810,10811],{"class":3192},"\"#1E90FF\"\n",[3089,10813,10814,10817,10819],{"class":3091,"line":3229},[3089,10815,10816],{"class":3185},"               ActiveGlowColor",[3089,10818,3189],{"class":3099},[3089,10820,10821],{"class":3192},"\"#FF6B35\"\n",[3089,10823,10824,10827,10829,10832],{"class":3091,"line":3243},[3089,10825,10826],{"class":3185},"               NonActiveGlowColor",[3089,10828,3189],{"class":3099},[3089,10830,10831],{"class":3192},"\"#CCCCCC\"",[3089,10833,3240],{"class":3177},[3089,10835,10836],{"class":3091,"line":3254},[3089,10837,10615],{"class":3279},[3089,10839,10840,10842,10844],{"class":3091,"line":3265},[3089,10841,3344],{"class":3177},[3089,10843,10776],{"class":3181},[3089,10845,3240],{"class":3177},[2964,10847,10848],{},"Glow ефект створює кольорове світіння навколо вікна, яке змінюється залежно від стану (активне/неактивне).",[2964,10850,10851,10854],{},[2983,10852,10853],{},"BlurWindow"," — вікно з blur фоном (розмиття):",[3079,10856,10858],{"className":3168,"code":10857,"language":3170,"meta":3084,"style":3084},"\u003Chc:BlurWindow x:Class=\"MyApp.SplashWindow\"\n               xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n               Title=\"Splash\"\n               Height=\"400\"\n               Width=\"600\"\n               WindowStyle=\"None\"\n               AllowsTransparency=\"True\"\n               Background=\"Transparent\">\n    \u003CBorder Background=\"#CC000000\" CornerRadius=\"10\">\n        \u003CStackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n            \u003CTextBlock Text=\"Завантаження...\" \n                       Foreground=\"White\" \n                       FontSize=\"24\"\n                       Margin=\"0,0,0,20\"/>\n            \u003Chc:LoadingCircle/>\n        \u003C/StackPanel>\n    \u003C/Border>\n\u003C/hc:BlurWindow>\n",[3086,10859,10860,10874,10882,10891,10901,10910,10920,10929,10941,10963,10983,10998,11009,11018,11028,11037,11045,11053],{"__ignoreMap":3084},[3089,10861,10862,10864,10867,10869,10871],{"class":3091,"line":3092},[3089,10863,3178],{"class":3177},[3089,10865,10866],{"class":3181},"hc:BlurWindow",[3089,10868,3186],{"class":3185},[3089,10870,3189],{"class":3099},[3089,10872,10873],{"class":3192},"\"MyApp.SplashWindow\"\n",[3089,10875,10876,10878,10880],{"class":3091,"line":3196},[3089,10877,10787],{"class":3185},[3089,10879,3189],{"class":3099},[3089,10881,3226],{"class":3192},[3089,10883,10884,10886,10888],{"class":3091,"line":3207},[3089,10885,10796],{"class":3185},[3089,10887,3189],{"class":3099},[3089,10889,10890],{"class":3192},"\"Splash\"\n",[3089,10892,10893,10896,10898],{"class":3091,"line":3218},[3089,10894,10895],{"class":3185},"               Height",[3089,10897,3189],{"class":3099},[3089,10899,10900],{"class":3192},"\"400\"\n",[3089,10902,10903,10906,10908],{"class":3091,"line":3229},[3089,10904,10905],{"class":3185},"               Width",[3089,10907,3189],{"class":3099},[3089,10909,10698],{"class":3192},[3089,10911,10912,10915,10917],{"class":3091,"line":3243},[3089,10913,10914],{"class":3185},"               WindowStyle",[3089,10916,3189],{"class":3099},[3089,10918,10919],{"class":3192},"\"None\"\n",[3089,10921,10922,10925,10927],{"class":3091,"line":3254},[3089,10923,10924],{"class":3185},"               AllowsTransparency",[3089,10926,3189],{"class":3099},[3089,10928,7411],{"class":3192},[3089,10930,10931,10934,10936,10939],{"class":3091,"line":3265},[3089,10932,10933],{"class":3185},"               Background",[3089,10935,3189],{"class":3099},[3089,10937,10938],{"class":3192},"\"Transparent\"",[3089,10940,3240],{"class":3177},[3089,10942,10943,10945,10947,10949,10951,10954,10957,10959,10961],{"class":3091,"line":3276},[3089,10944,3246],{"class":3177},[3089,10946,3882],{"class":3181},[3089,10948,3810],{"class":3185},[3089,10950,3189],{"class":3099},[3089,10952,10953],{"class":3192},"\"#CC000000\"",[3089,10955,10956],{"class":3185}," CornerRadius",[3089,10958,3189],{"class":3099},[3089,10960,3906],{"class":3192},[3089,10962,3240],{"class":3177},[3089,10964,10965,10967,10969,10971,10973,10975,10977,10979,10981],{"class":3091,"line":3283},[3089,10966,3257],{"class":3177},[3089,10968,3574],{"class":3181},[3089,10970,6392],{"class":3185},[3089,10972,3189],{"class":3099},[3089,10974,6397],{"class":3192},[3089,10976,6400],{"class":3185},[3089,10978,3189],{"class":3099},[3089,10980,6397],{"class":3192},[3089,10982,3240],{"class":3177},[3089,10984,10985,10987,10989,10991,10993,10996],{"class":3091,"line":3295},[3089,10986,3268],{"class":3177},[3089,10988,3583],{"class":3181},[3089,10990,3586],{"class":3185},[3089,10992,3189],{"class":3099},[3089,10994,10995],{"class":3192},"\"Завантаження...\"",[3089,10997,3526],{"class":3099},[3089,10999,11000,11003,11005,11007],{"class":3091,"line":3301},[3089,11001,11002],{"class":3185},"                       Foreground",[3089,11004,3189],{"class":3099},[3089,11006,3815],{"class":3192},[3089,11008,3526],{"class":3099},[3089,11010,11011,11013,11015],{"class":3091,"line":3311},[3089,11012,3598],{"class":3185},[3089,11014,3189],{"class":3099},[3089,11016,11017],{"class":3192},"\"24\"\n",[3089,11019,11020,11022,11024,11026],{"class":3091,"line":3321},[3089,11021,3620],{"class":3185},[3089,11023,3189],{"class":3099},[3089,11025,3625],{"class":3192},[3089,11027,3292],{"class":3177},[3089,11029,11030,11032,11035],{"class":3091,"line":3331},[3089,11031,3268],{"class":3177},[3089,11033,11034],{"class":3181},"hc:LoadingCircle",[3089,11036,3292],{"class":3177},[3089,11038,11039,11041,11043],{"class":3091,"line":3341},[3089,11040,3324],{"class":3177},[3089,11042,3574],{"class":3181},[3089,11044,3240],{"class":3177},[3089,11046,11047,11049,11051],{"class":3091,"line":3660},[3089,11048,3334],{"class":3177},[3089,11050,3882],{"class":3181},[3089,11052,3240],{"class":3177},[3089,11054,11055,11057,11059],{"class":3091,"line":3673},[3089,11056,3344],{"class":3177},[3089,11058,10866],{"class":3181},[3089,11060,3240],{"class":3177},[2964,11062,11063],{},"BlurWindow розмиває фон за вікном, створюючи ефект \"frosted glass\" (матового скла).",[2964,11065,11066,11069],{},[2983,11067,11068],{},"ImageBrowser"," — переглядач зображень з можливістю zoom, pan, rotate:",[3079,11071,11073],{"className":4236,"code":11072,"language":4238,"meta":3084,"style":3084},"// Відкриття ImageBrowser програмно\nvar imageBrowser = new ImageBrowser(new Uri(\"path/to/image.jpg\"));\nimageBrowser.ShowDialog();\n\n// Або з колекцією зображень\nvar images = new List\u003CUri>\n{\n    new Uri(\"image1.jpg\", UriKind.Relative),\n    new Uri(\"image2.jpg\", UriKind.Relative),\n    new Uri(\"image3.jpg\", UriKind.Relative)\n};\nvar imageBrowser = new ImageBrowser(images, 0); // 0 - індекс початкового зображення\nimageBrowser.ShowDialog();\n",[3086,11074,11075,11080,11109,11121,11125,11130,11151,11155,11180,11201,11222,11227,11253],{"__ignoreMap":3084},[3089,11076,11077],{"class":3091,"line":3092},[3089,11078,11079],{"class":3279},"// Відкриття ImageBrowser програмно\n",[3089,11081,11082,11084,11087,11089,11091,11094,11096,11098,11101,11103,11106],{"class":3091,"line":3196},[3089,11083,5827],{"class":4268},[3089,11085,11086],{"class":4312}," imageBrowser",[3089,11088,4488],{"class":3099},[3089,11090,7898],{"class":4268},[3089,11092,11093],{"class":4249}," ImageBrowser",[3089,11095,4306],{"class":3099},[3089,11097,7898],{"class":4268},[3089,11099,11100],{"class":4249}," Uri",[3089,11102,4306],{"class":3099},[3089,11104,11105],{"class":3118},"\"path/to/image.jpg\"",[3089,11107,11108],{"class":3099},"));\n",[3089,11110,11111,11114,11116,11119],{"class":3091,"line":3207},[3089,11112,11113],{"class":4312},"imageBrowser",[3089,11115,3454],{"class":3099},[3089,11117,11118],{"class":3095},"ShowDialog",[3089,11120,5728],{"class":3099},[3089,11122,11123],{"class":3091,"line":3218},[3089,11124,4263],{"emptyLinePlaceholder":4262},[3089,11126,11127],{"class":3091,"line":3229},[3089,11128,11129],{"class":3279},"// Або з колекцією зображень\n",[3089,11131,11132,11134,11137,11139,11141,11144,11146,11149],{"class":3091,"line":3243},[3089,11133,5827],{"class":4268},[3089,11135,11136],{"class":4312}," images",[3089,11138,4488],{"class":3099},[3089,11140,7898],{"class":4268},[3089,11142,11143],{"class":4249}," List",[3089,11145,3178],{"class":3099},[3089,11147,11148],{"class":4249},"Uri",[3089,11150,3240],{"class":3099},[3089,11152,11153],{"class":3091,"line":3254},[3089,11154,4289],{"class":3099},[3089,11156,11157,11160,11162,11164,11167,11169,11172,11174,11177],{"class":3091,"line":3265},[3089,11158,11159],{"class":4268},"    new",[3089,11161,11100],{"class":4249},[3089,11163,4306],{"class":3099},[3089,11165,11166],{"class":3118},"\"image1.jpg\"",[3089,11168,4789],{"class":3099},[3089,11170,11171],{"class":4312},"UriKind",[3089,11173,3454],{"class":3099},[3089,11175,11176],{"class":4312},"Relative",[3089,11178,11179],{"class":3099},"),\n",[3089,11181,11182,11184,11186,11188,11191,11193,11195,11197,11199],{"class":3091,"line":3276},[3089,11183,11159],{"class":4268},[3089,11185,11100],{"class":4249},[3089,11187,4306],{"class":3099},[3089,11189,11190],{"class":3118},"\"image2.jpg\"",[3089,11192,4789],{"class":3099},[3089,11194,11171],{"class":4312},[3089,11196,3454],{"class":3099},[3089,11198,11176],{"class":4312},[3089,11200,11179],{"class":3099},[3089,11202,11203,11205,11207,11209,11212,11214,11216,11218,11220],{"class":3091,"line":3283},[3089,11204,11159],{"class":4268},[3089,11206,11100],{"class":4249},[3089,11208,4306],{"class":3099},[3089,11210,11211],{"class":3118},"\"image3.jpg\"",[3089,11213,4789],{"class":3099},[3089,11215,11171],{"class":4312},[3089,11217,3454],{"class":3099},[3089,11219,11176],{"class":4312},[3089,11221,4316],{"class":3099},[3089,11223,11224],{"class":3091,"line":3295},[3089,11225,11226],{"class":3099},"};\n",[3089,11228,11229,11231,11233,11235,11237,11239,11241,11244,11246,11248,11250],{"class":3091,"line":3301},[3089,11230,5827],{"class":4268},[3089,11232,11086],{"class":4312},[3089,11234,4488],{"class":3099},[3089,11236,7898],{"class":4268},[3089,11238,11093],{"class":4249},[3089,11240,4306],{"class":3099},[3089,11242,11243],{"class":4312},"images",[3089,11245,4789],{"class":3099},[3089,11247,4845],{"class":4844},[3089,11249,7007],{"class":3099},[3089,11251,11252],{"class":3279},"// 0 - індекс початкового зображення\n",[3089,11254,11255,11257,11259,11261],{"class":3091,"line":3311},[3089,11256,11113],{"class":4312},[3089,11258,3454],{"class":3099},[3089,11260,11118],{"class":3095},[3089,11262,5728],{"class":3099},[3000,11264,11266],{"id":11265},"навігація","Навігація",[2964,11268,11269,11272],{},[2983,11270,11271],{},"TabControl"," — покращені вкладки з анімаціями:",[3079,11274,11276],{"className":3168,"code":11275,"language":3170,"meta":3084,"style":3084},"\u003Chc:TabControl Style=\"{StaticResource TabControlCapsule}\">\n    \u003CTabItem Header=\"Головна\">\n        \u003CTextBlock Text=\"Контент головної вкладки\" Margin=\"20\"/>\n    \u003C/TabItem>\n    \u003CTabItem Header=\"Налаштування\">\n        \u003CTextBlock Text=\"Контент налаштувань\" Margin=\"20\"/>\n    \u003C/TabItem>\n    \u003CTabItem Header=\"Про програму\">\n        \u003CTextBlock Text=\"Інформація про програму\" Margin=\"20\"/>\n    \u003C/TabItem>\n\u003C/hc:TabControl>\n",[3086,11277,11278,11294,11310,11331,11339,11354,11375,11383,11398,11419,11427],{"__ignoreMap":3084},[3089,11279,11280,11282,11285,11287,11289,11292],{"class":3091,"line":3092},[3089,11281,3178],{"class":3177},[3089,11283,11284],{"class":3181},"hc:TabControl",[3089,11286,6237],{"class":3185},[3089,11288,3189],{"class":3099},[3089,11290,11291],{"class":3192},"\"{StaticResource TabControlCapsule}\"",[3089,11293,3240],{"class":3177},[3089,11295,11296,11298,11301,11303,11305,11308],{"class":3091,"line":3196},[3089,11297,3246],{"class":3177},[3089,11299,11300],{"class":3181},"TabItem",[3089,11302,10281],{"class":3185},[3089,11304,3189],{"class":3099},[3089,11306,11307],{"class":3192},"\"Головна\"",[3089,11309,3240],{"class":3177},[3089,11311,11312,11314,11316,11318,11320,11323,11325,11327,11329],{"class":3091,"line":3207},[3089,11313,3257],{"class":3177},[3089,11315,3583],{"class":3181},[3089,11317,3586],{"class":3185},[3089,11319,3189],{"class":3099},[3089,11321,11322],{"class":3192},"\"Контент головної вкладки\"",[3089,11324,3560],{"class":3185},[3089,11326,3189],{"class":3099},[3089,11328,3565],{"class":3192},[3089,11330,3292],{"class":3177},[3089,11332,11333,11335,11337],{"class":3091,"line":3218},[3089,11334,3334],{"class":3177},[3089,11336,11300],{"class":3181},[3089,11338,3240],{"class":3177},[3089,11340,11341,11343,11345,11347,11349,11352],{"class":3091,"line":3229},[3089,11342,3246],{"class":3177},[3089,11344,11300],{"class":3181},[3089,11346,10281],{"class":3185},[3089,11348,3189],{"class":3099},[3089,11350,11351],{"class":3192},"\"Налаштування\"",[3089,11353,3240],{"class":3177},[3089,11355,11356,11358,11360,11362,11364,11367,11369,11371,11373],{"class":3091,"line":3243},[3089,11357,3257],{"class":3177},[3089,11359,3583],{"class":3181},[3089,11361,3586],{"class":3185},[3089,11363,3189],{"class":3099},[3089,11365,11366],{"class":3192},"\"Контент налаштувань\"",[3089,11368,3560],{"class":3185},[3089,11370,3189],{"class":3099},[3089,11372,3565],{"class":3192},[3089,11374,3292],{"class":3177},[3089,11376,11377,11379,11381],{"class":3091,"line":3254},[3089,11378,3334],{"class":3177},[3089,11380,11300],{"class":3181},[3089,11382,3240],{"class":3177},[3089,11384,11385,11387,11389,11391,11393,11396],{"class":3091,"line":3265},[3089,11386,3246],{"class":3177},[3089,11388,11300],{"class":3181},[3089,11390,10281],{"class":3185},[3089,11392,3189],{"class":3099},[3089,11394,11395],{"class":3192},"\"Про програму\"",[3089,11397,3240],{"class":3177},[3089,11399,11400,11402,11404,11406,11408,11411,11413,11415,11417],{"class":3091,"line":3276},[3089,11401,3257],{"class":3177},[3089,11403,3583],{"class":3181},[3089,11405,3586],{"class":3185},[3089,11407,3189],{"class":3099},[3089,11409,11410],{"class":3192},"\"Інформація про програму\"",[3089,11412,3560],{"class":3185},[3089,11414,3189],{"class":3099},[3089,11416,3565],{"class":3192},[3089,11418,3292],{"class":3177},[3089,11420,11421,11423,11425],{"class":3091,"line":3283},[3089,11422,3334],{"class":3177},[3089,11424,11300],{"class":3181},[3089,11426,3240],{"class":3177},[3089,11428,11429,11431,11433],{"class":3091,"line":3295},[3089,11430,3344],{"class":3177},[3089,11432,11284],{"class":3181},[3089,11434,3240],{"class":3177},[2964,11436,11437],{},"HandyControl надає кілька стилів для TabControl:",[3008,11439,11440,11446,11452],{},[3011,11441,11442,11445],{},[3086,11443,11444],{},"TabControlCapsule"," — вкладки у вигляді капсул",[3011,11447,11448,11451],{},[3086,11449,11450],{},"TabControlSliding"," — вкладки з анімацією ковзання",[3011,11453,11454,11457],{},[3086,11455,11456],{},"TabControlPivot"," — стиль pivot (як у Windows Phone)",[2964,11459,11460,11463],{},[2983,11461,11462],{},"SideMenu"," — бічне меню для навігації:",[3079,11465,11467],{"className":3168,"code":11466,"language":3170,"meta":3084,"style":3084},"\u003Chc:SideMenu AutoSelect=\"True\" \n             ExpandMode=\"Freedom\"\n             SelectionChanged=\"SideMenu_SelectionChanged\">\n    \u003Chc:SideMenuItem Header=\"Dashboard\" \n                     hc:IconElement.Geometry=\"{StaticResource DashboardGeometry}\"/>\n    \u003Chc:SideMenuItem Header=\"Користувачі\" \n                     hc:IconElement.Geometry=\"{StaticResource UsersGeometry}\"/>\n    \u003Chc:SideMenuItem Header=\"Налаштування\" \n                     hc:IconElement.Geometry=\"{StaticResource SettingsGeometry}\">\n        \u003Chc:SideMenuItem Header=\"Загальні\"/>\n        \u003Chc:SideMenuItem Header=\"Безпека\"/>\n        \u003Chc:SideMenuItem Header=\"Сповіщення\"/>\n    \u003C/hc:SideMenuItem>\n\u003C/hc:SideMenu>\n",[3086,11468,11469,11485,11495,11507,11523,11535,11550,11561,11575,11586,11601,11616,11631,11639],{"__ignoreMap":3084},[3089,11470,11471,11473,11476,11479,11481,11483],{"class":3091,"line":3092},[3089,11472,3178],{"class":3177},[3089,11474,11475],{"class":3181},"hc:SideMenu",[3089,11477,11478],{"class":3185}," AutoSelect",[3089,11480,3189],{"class":3099},[3089,11482,7190],{"class":3192},[3089,11484,3526],{"class":3099},[3089,11486,11487,11490,11492],{"class":3091,"line":3196},[3089,11488,11489],{"class":3185},"             ExpandMode",[3089,11491,3189],{"class":3099},[3089,11493,11494],{"class":3192},"\"Freedom\"\n",[3089,11496,11497,11500,11502,11505],{"class":3091,"line":3207},[3089,11498,11499],{"class":3185},"             SelectionChanged",[3089,11501,3189],{"class":3099},[3089,11503,11504],{"class":3192},"\"SideMenu_SelectionChanged\"",[3089,11506,3240],{"class":3177},[3089,11508,11509,11511,11514,11516,11518,11521],{"class":3091,"line":3218},[3089,11510,3246],{"class":3177},[3089,11512,11513],{"class":3181},"hc:SideMenuItem",[3089,11515,10281],{"class":3185},[3089,11517,3189],{"class":3099},[3089,11519,11520],{"class":3192},"\"Dashboard\"",[3089,11522,3526],{"class":3099},[3089,11524,11525,11528,11530,11533],{"class":3091,"line":3229},[3089,11526,11527],{"class":3185},"                     hc:IconElement.Geometry",[3089,11529,3189],{"class":3099},[3089,11531,11532],{"class":3192},"\"{StaticResource DashboardGeometry}\"",[3089,11534,3292],{"class":3177},[3089,11536,11537,11539,11541,11543,11545,11548],{"class":3091,"line":3243},[3089,11538,3246],{"class":3177},[3089,11540,11513],{"class":3181},[3089,11542,10281],{"class":3185},[3089,11544,3189],{"class":3099},[3089,11546,11547],{"class":3192},"\"Користувачі\"",[3089,11549,3526],{"class":3099},[3089,11551,11552,11554,11556,11559],{"class":3091,"line":3254},[3089,11553,11527],{"class":3185},[3089,11555,3189],{"class":3099},[3089,11557,11558],{"class":3192},"\"{StaticResource UsersGeometry}\"",[3089,11560,3292],{"class":3177},[3089,11562,11563,11565,11567,11569,11571,11573],{"class":3091,"line":3265},[3089,11564,3246],{"class":3177},[3089,11566,11513],{"class":3181},[3089,11568,10281],{"class":3185},[3089,11570,3189],{"class":3099},[3089,11572,11351],{"class":3192},[3089,11574,3526],{"class":3099},[3089,11576,11577,11579,11581,11584],{"class":3091,"line":3276},[3089,11578,11527],{"class":3185},[3089,11580,3189],{"class":3099},[3089,11582,11583],{"class":3192},"\"{StaticResource SettingsGeometry}\"",[3089,11585,3240],{"class":3177},[3089,11587,11588,11590,11592,11594,11596,11599],{"class":3091,"line":3283},[3089,11589,3257],{"class":3177},[3089,11591,11513],{"class":3181},[3089,11593,10281],{"class":3185},[3089,11595,3189],{"class":3099},[3089,11597,11598],{"class":3192},"\"Загальні\"",[3089,11600,3292],{"class":3177},[3089,11602,11603,11605,11607,11609,11611,11614],{"class":3091,"line":3295},[3089,11604,3257],{"class":3177},[3089,11606,11513],{"class":3181},[3089,11608,10281],{"class":3185},[3089,11610,3189],{"class":3099},[3089,11612,11613],{"class":3192},"\"Безпека\"",[3089,11615,3292],{"class":3177},[3089,11617,11618,11620,11622,11624,11626,11629],{"class":3091,"line":3301},[3089,11619,3257],{"class":3177},[3089,11621,11513],{"class":3181},[3089,11623,10281],{"class":3185},[3089,11625,3189],{"class":3099},[3089,11627,11628],{"class":3192},"\"Сповіщення\"",[3089,11630,3292],{"class":3177},[3089,11632,11633,11635,11637],{"class":3091,"line":3311},[3089,11634,3334],{"class":3177},[3089,11636,11513],{"class":3181},[3089,11638,3240],{"class":3177},[3089,11640,11641,11643,11645],{"class":3091,"line":3321},[3089,11642,3344],{"class":3177},[3089,11644,11475],{"class":3181},[3089,11646,3240],{"class":3177},[2964,11648,11649],{},"SideMenu підтримує вкладені елементи та різні режими розгортання:",[3008,11651,11652,11658],{},[3011,11653,11654,11657],{},[3086,11655,11656],{},"Freedom"," — кожен елемент розгортається незалежно",[3011,11659,11660,11663],{},[3086,11661,11662],{},"Accordion"," — тільки один елемент може бути розгорнутим",[2964,11665,11666,11669],{},[2983,11667,11668],{},"Pagination"," — пагінація для великих списків:",[3079,11671,11673],{"className":3168,"code":11672,"language":3170,"meta":3084,"style":3084},"\u003Chc:Pagination PageIndex=\"{Binding CurrentPage, Mode=TwoWay}\"\n               MaxPageCount=\"{Binding TotalPages}\"\n               DataCountPerPage=\"20\"\n               PageUpdated=\"Pagination_PageUpdated\"/>\n",[3086,11674,11675,11690,11700,11709],{"__ignoreMap":3084},[3089,11676,11677,11679,11682,11685,11687],{"class":3091,"line":3092},[3089,11678,3178],{"class":3177},[3089,11680,11681],{"class":3181},"hc:Pagination",[3089,11683,11684],{"class":3185}," PageIndex",[3089,11686,3189],{"class":3099},[3089,11688,11689],{"class":3192},"\"{Binding CurrentPage, Mode=TwoWay}\"\n",[3089,11691,11692,11695,11697],{"class":3091,"line":3196},[3089,11693,11694],{"class":3185},"               MaxPageCount",[3089,11696,3189],{"class":3099},[3089,11698,11699],{"class":3192},"\"{Binding TotalPages}\"\n",[3089,11701,11702,11705,11707],{"class":3091,"line":3207},[3089,11703,11704],{"class":3185},"               DataCountPerPage",[3089,11706,3189],{"class":3099},[3089,11708,9891],{"class":3192},[3089,11710,11711,11714,11716,11719],{"class":3091,"line":3218},[3089,11712,11713],{"class":3185},"               PageUpdated",[3089,11715,3189],{"class":3099},[3089,11717,11718],{"class":3192},"\"Pagination_PageUpdated\"",[3089,11720,3292],{"class":3177},[2964,11722,7699],{},[3079,11724,11726],{"className":4236,"code":11725,"language":4238,"meta":3084,"style":3084},"private void Pagination_PageUpdated(object sender, HandyControl.Data.FunctionEventArgs\u003Cint> e)\n{\n    var newPage = e.Info;\n    // Завантажити дані для нової сторінки\n    LoadPageData(newPage);\n}\n",[3086,11727,11728,11766,11770,11787,11792,11804],{"__ignoreMap":3084},[3089,11729,11730,11732,11734,11737,11739,11741,11743,11745,11747,11749,11751,11753,11755,11757,11760,11762,11764],{"class":3091,"line":3092},[3089,11731,4773],{"class":4268},[3089,11733,4300],{"class":4268},[3089,11735,11736],{"class":3095}," Pagination_PageUpdated",[3089,11738,4306],{"class":3099},[3089,11740,4783],{"class":4268},[3089,11742,4786],{"class":4312},[3089,11744,4789],{"class":3099},[3089,11746,7724],{"class":4249},[3089,11748,3454],{"class":3099},[3089,11750,7729],{"class":4249},[3089,11752,3454],{"class":3099},[3089,11754,7734],{"class":4249},[3089,11756,3178],{"class":3099},[3089,11758,11759],{"class":4268},"int",[3089,11761,7741],{"class":3099},[3089,11763,4336],{"class":4312},[3089,11765,4316],{"class":3099},[3089,11767,11768],{"class":3091,"line":3196},[3089,11769,4289],{"class":3099},[3089,11771,11772,11774,11777,11779,11781,11783,11785],{"class":3091,"line":3207},[3089,11773,4805],{"class":4268},[3089,11775,11776],{"class":4312}," newPage",[3089,11778,4488],{"class":3099},[3089,11780,4336],{"class":4312},[3089,11782,3454],{"class":3099},[3089,11784,7765],{"class":4312},[3089,11786,4257],{"class":3099},[3089,11788,11789],{"class":3091,"line":3218},[3089,11790,11791],{"class":3279},"    // Завантажити дані для нової сторінки\n",[3089,11793,11794,11797,11799,11802],{"class":3091,"line":3229},[3089,11795,11796],{"class":3095},"    LoadPageData",[3089,11798,4306],{"class":3099},[3089,11800,11801],{"class":4312},"newPage",[3089,11803,4339],{"class":3099},[3089,11805,11806],{"class":3091,"line":3243},[3089,11807,4394],{"class":3099},[3000,11809,11811],{"id":11810},"dialogs-та-popups","Dialogs та Popups",[2964,11813,11814,11817],{},[2983,11815,11816],{},"Dialog"," — модальні діалоги з різними типами:",[3079,11819,11821],{"className":4236,"code":11820,"language":4238,"meta":3084,"style":3084},"// Простий діалог з повідомленням\nDialog.Show(\"Операція виконана успішно!\");\n\n// Діалог з підтвердженням\nvar result = Dialog.Show(new MessageBoxInfo\n{\n    Message = \"Ви впевнені, що хочете видалити цей елемент?\",\n    Caption = \"Підтвердження\",\n    Button = MessageBoxButton.YesNo,\n    IconBrushKey = ResourceToken.AccentBrush,\n    IconKey = ResourceToken.AskGeometry\n});\n\nif (result == MessageBoxResult.Yes)\n{\n    // Видалити елемент\n}\n\n// Власний діалог з custom контентом\nDialog.Show(new CustomDialogView());\n",[3086,11822,11823,11828,11844,11848,11853,11875,11879,11892,11904,11921,11938,11952,11957,11961,11983,11987,11992,11996,12000,12005],{"__ignoreMap":3084},[3089,11824,11825],{"class":3091,"line":3092},[3089,11826,11827],{"class":3279},"// Простий діалог з повідомленням\n",[3089,11829,11830,11832,11834,11837,11839,11842],{"class":3091,"line":3196},[3089,11831,11816],{"class":4312},[3089,11833,3454],{"class":3099},[3089,11835,11836],{"class":3095},"Show",[3089,11838,4306],{"class":3099},[3089,11840,11841],{"class":3118},"\"Операція виконана успішно!\"",[3089,11843,4339],{"class":3099},[3089,11845,11846],{"class":3091,"line":3207},[3089,11847,4263],{"emptyLinePlaceholder":4262},[3089,11849,11850],{"class":3091,"line":3218},[3089,11851,11852],{"class":3279},"// Діалог з підтвердженням\n",[3089,11854,11855,11857,11860,11862,11864,11866,11868,11870,11872],{"class":3091,"line":3229},[3089,11856,5827],{"class":4268},[3089,11858,11859],{"class":4312}," result",[3089,11861,4488],{"class":3099},[3089,11863,11816],{"class":4312},[3089,11865,3454],{"class":3099},[3089,11867,11836],{"class":3095},[3089,11869,4306],{"class":3099},[3089,11871,7898],{"class":4268},[3089,11873,11874],{"class":4249}," MessageBoxInfo\n",[3089,11876,11877],{"class":3091,"line":3243},[3089,11878,4289],{"class":3099},[3089,11880,11881,11884,11886,11889],{"class":3091,"line":3254},[3089,11882,11883],{"class":4312},"    Message",[3089,11885,4488],{"class":3099},[3089,11887,11888],{"class":3118},"\"Ви впевнені, що хочете видалити цей елемент?\"",[3089,11890,11891],{"class":3099},",\n",[3089,11893,11894,11897,11899,11902],{"class":3091,"line":3265},[3089,11895,11896],{"class":4312},"    Caption",[3089,11898,4488],{"class":3099},[3089,11900,11901],{"class":3118},"\"Підтвердження\"",[3089,11903,11891],{"class":3099},[3089,11905,11906,11909,11911,11914,11916,11919],{"class":3091,"line":3276},[3089,11907,11908],{"class":4312},"    Button",[3089,11910,4488],{"class":3099},[3089,11912,11913],{"class":4312},"MessageBoxButton",[3089,11915,3454],{"class":3099},[3089,11917,11918],{"class":4312},"YesNo",[3089,11920,11891],{"class":3099},[3089,11922,11923,11926,11928,11931,11933,11936],{"class":3091,"line":3283},[3089,11924,11925],{"class":4312},"    IconBrushKey",[3089,11927,4488],{"class":3099},[3089,11929,11930],{"class":4312},"ResourceToken",[3089,11932,3454],{"class":3099},[3089,11934,11935],{"class":4312},"AccentBrush",[3089,11937,11891],{"class":3099},[3089,11939,11940,11943,11945,11947,11949],{"class":3091,"line":3295},[3089,11941,11942],{"class":4312},"    IconKey",[3089,11944,4488],{"class":3099},[3089,11946,11930],{"class":4312},[3089,11948,3454],{"class":3099},[3089,11950,11951],{"class":4312},"AskGeometry\n",[3089,11953,11954],{"class":3091,"line":3301},[3089,11955,11956],{"class":3099},"});\n",[3089,11958,11959],{"class":3091,"line":3311},[3089,11960,4263],{"emptyLinePlaceholder":4262},[3089,11962,11963,11966,11968,11971,11973,11976,11978,11981],{"class":3091,"line":3321},[3089,11964,11965],{"class":4245},"if",[3089,11967,4829],{"class":3099},[3089,11969,11970],{"class":4312},"result",[3089,11972,4841],{"class":3099},[3089,11974,11975],{"class":4312},"MessageBoxResult",[3089,11977,3454],{"class":3099},[3089,11979,11980],{"class":4312},"Yes",[3089,11982,4316],{"class":3099},[3089,11984,11985],{"class":3091,"line":3331},[3089,11986,4289],{"class":3099},[3089,11988,11989],{"class":3091,"line":3341},[3089,11990,11991],{"class":3279},"    // Видалити елемент\n",[3089,11993,11994],{"class":3091,"line":3660},[3089,11995,4394],{"class":3099},[3089,11997,11998],{"class":3091,"line":3673},[3089,11999,4263],{"emptyLinePlaceholder":4262},[3089,12001,12002],{"class":3091,"line":3678},[3089,12003,12004],{"class":3279},"// Власний діалог з custom контентом\n",[3089,12006,12007,12009,12011,12013,12015,12017,12020],{"class":3091,"line":3693},[3089,12008,11816],{"class":4312},[3089,12010,3454],{"class":3099},[3089,12012,11836],{"class":3095},[3089,12014,4306],{"class":3099},[3089,12016,7898],{"class":4268},[3089,12018,12019],{"class":4249}," CustomDialogView",[3089,12021,12022],{"class":3099},"());\n",[2964,12024,12025,12028],{},[2983,12026,12027],{},"Drawer"," — висувна панель (як у Material Design):",[3079,12030,12032],{"className":3168,"code":12031,"language":3170,"meta":3084,"style":3084},"\u003Chc:Drawer Name=\"DrawerLeft\" \n           Dock=\"Left\"\n           ShowMode=\"Push\">\n    \u003CBorder Background=\"{DynamicResource RegionBrush}\" \n            Width=\"300\"\n            BorderThickness=\"0,0,1,0\"\n            BorderBrush=\"{DynamicResource BorderBrush}\">\n        \u003CStackPanel Margin=\"20\">\n            \u003CTextBlock Text=\"Меню\" FontSize=\"20\" FontWeight=\"Bold\" Margin=\"0,0,0,20\"/>\n            \u003CButton Content=\"Пункт 1\" Style=\"{StaticResource ButtonDefault}\" Margin=\"0,0,0,10\"/>\n            \u003CButton Content=\"Пункт 2\" Style=\"{StaticResource ButtonDefault}\" Margin=\"0,0,0,10\"/>\n            \u003CButton Content=\"Пункт 3\" Style=\"{StaticResource ButtonDefault}\"/>\n        \u003C/StackPanel>\n    \u003C/Border>\n\u003C/hc:Drawer>\n\n\u003C!-- Кнопка для відкриття Drawer -->\n\u003CButton Content=\"Відкрити меню\" \n        Command=\"hc:ControlCommands.Open\"\n        CommandParameter=\"{Binding ElementName=DrawerLeft}\"/>\n",[3086,12033,12034,12051,12061,12073,12088,12098,12108,12120,12134,12167,12195,12222,12243,12251,12259,12267,12271,12276,12291,12301],{"__ignoreMap":3084},[3089,12035,12036,12038,12041,12044,12046,12049],{"class":3091,"line":3092},[3089,12037,3178],{"class":3177},[3089,12039,12040],{"class":3181},"hc:Drawer",[3089,12042,12043],{"class":3185}," Name",[3089,12045,3189],{"class":3099},[3089,12047,12048],{"class":3192},"\"DrawerLeft\"",[3089,12050,3526],{"class":3099},[3089,12052,12053,12056,12058],{"class":3091,"line":3196},[3089,12054,12055],{"class":3185},"           Dock",[3089,12057,3189],{"class":3099},[3089,12059,12060],{"class":3192},"\"Left\"\n",[3089,12062,12063,12066,12068,12071],{"class":3091,"line":3207},[3089,12064,12065],{"class":3185},"           ShowMode",[3089,12067,3189],{"class":3099},[3089,12069,12070],{"class":3192},"\"Push\"",[3089,12072,3240],{"class":3177},[3089,12074,12075,12077,12079,12081,12083,12086],{"class":3091,"line":3218},[3089,12076,3246],{"class":3177},[3089,12078,3882],{"class":3181},[3089,12080,3810],{"class":3185},[3089,12082,3189],{"class":3099},[3089,12084,12085],{"class":3192},"\"{DynamicResource RegionBrush}\"",[3089,12087,3526],{"class":3099},[3089,12089,12090,12093,12095],{"class":3091,"line":3229},[3089,12091,12092],{"class":3185},"            Width",[3089,12094,3189],{"class":3099},[3089,12096,12097],{"class":3192},"\"300\"\n",[3089,12099,12100,12103,12105],{"class":3091,"line":3243},[3089,12101,12102],{"class":3185},"            BorderThickness",[3089,12104,3189],{"class":3099},[3089,12106,12107],{"class":3192},"\"0,0,1,0\"\n",[3089,12109,12110,12113,12115,12118],{"class":3091,"line":3254},[3089,12111,12112],{"class":3185},"            BorderBrush",[3089,12114,3189],{"class":3099},[3089,12116,12117],{"class":3192},"\"{DynamicResource BorderBrush}\"",[3089,12119,3240],{"class":3177},[3089,12121,12122,12124,12126,12128,12130,12132],{"class":3091,"line":3265},[3089,12123,3257],{"class":3177},[3089,12125,3574],{"class":3181},[3089,12127,3560],{"class":3185},[3089,12129,3189],{"class":3099},[3089,12131,3565],{"class":3192},[3089,12133,3240],{"class":3177},[3089,12135,12136,12138,12140,12142,12144,12147,12149,12151,12153,12155,12157,12159,12161,12163,12165],{"class":3091,"line":3276},[3089,12137,3268],{"class":3177},[3089,12139,3583],{"class":3181},[3089,12141,3586],{"class":3185},[3089,12143,3189],{"class":3099},[3089,12145,12146],{"class":3192},"\"Меню\"",[3089,12148,3938],{"class":3185},[3089,12150,3189],{"class":3099},[3089,12152,3565],{"class":3192},[3089,12154,9097],{"class":3185},[3089,12156,3189],{"class":3099},[3089,12158,9102],{"class":3192},[3089,12160,3560],{"class":3185},[3089,12162,3189],{"class":3099},[3089,12164,3625],{"class":3192},[3089,12166,3292],{"class":3177},[3089,12168,12169,12171,12173,12175,12177,12180,12182,12184,12187,12189,12191,12193],{"class":3091,"line":3283},[3089,12170,3268],{"class":3177},[3089,12172,4118],{"class":3181},[3089,12174,3729],{"class":3185},[3089,12176,3189],{"class":3099},[3089,12178,12179],{"class":3192},"\"Пункт 1\"",[3089,12181,6237],{"class":3185},[3089,12183,3189],{"class":3099},[3089,12185,12186],{"class":3192},"\"{StaticResource ButtonDefault}\"",[3089,12188,3560],{"class":3185},[3089,12190,3189],{"class":3099},[3089,12192,3668],{"class":3192},[3089,12194,3292],{"class":3177},[3089,12196,12197,12199,12201,12203,12205,12208,12210,12212,12214,12216,12218,12220],{"class":3091,"line":3295},[3089,12198,3268],{"class":3177},[3089,12200,4118],{"class":3181},[3089,12202,3729],{"class":3185},[3089,12204,3189],{"class":3099},[3089,12206,12207],{"class":3192},"\"Пункт 2\"",[3089,12209,6237],{"class":3185},[3089,12211,3189],{"class":3099},[3089,12213,12186],{"class":3192},[3089,12215,3560],{"class":3185},[3089,12217,3189],{"class":3099},[3089,12219,3668],{"class":3192},[3089,12221,3292],{"class":3177},[3089,12223,12224,12226,12228,12230,12232,12235,12237,12239,12241],{"class":3091,"line":3301},[3089,12225,3268],{"class":3177},[3089,12227,4118],{"class":3181},[3089,12229,3729],{"class":3185},[3089,12231,3189],{"class":3099},[3089,12233,12234],{"class":3192},"\"Пункт 3\"",[3089,12236,6237],{"class":3185},[3089,12238,3189],{"class":3099},[3089,12240,12186],{"class":3192},[3089,12242,3292],{"class":3177},[3089,12244,12245,12247,12249],{"class":3091,"line":3311},[3089,12246,3324],{"class":3177},[3089,12248,3574],{"class":3181},[3089,12250,3240],{"class":3177},[3089,12252,12253,12255,12257],{"class":3091,"line":3321},[3089,12254,3334],{"class":3177},[3089,12256,3882],{"class":3181},[3089,12258,3240],{"class":3177},[3089,12260,12261,12263,12265],{"class":3091,"line":3331},[3089,12262,3344],{"class":3177},[3089,12264,12040],{"class":3181},[3089,12266,3240],{"class":3177},[3089,12268,12269],{"class":3091,"line":3341},[3089,12270,4263],{"emptyLinePlaceholder":4262},[3089,12272,12273],{"class":3091,"line":3660},[3089,12274,12275],{"class":3279},"\u003C!-- Кнопка для відкриття Drawer -->\n",[3089,12277,12278,12280,12282,12284,12286,12289],{"class":3091,"line":3673},[3089,12279,3178],{"class":3177},[3089,12281,4118],{"class":3181},[3089,12283,3729],{"class":3185},[3089,12285,3189],{"class":3099},[3089,12287,12288],{"class":3192},"\"Відкрити меню\"",[3089,12290,3526],{"class":3099},[3089,12292,12293,12296,12298],{"class":3091,"line":3678},[3089,12294,12295],{"class":3185},"        Command",[3089,12297,3189],{"class":3099},[3089,12299,12300],{"class":3192},"\"hc:ControlCommands.Open\"\n",[3089,12302,12303,12306,12308,12311],{"class":3091,"line":3693},[3089,12304,12305],{"class":3185},"        CommandParameter",[3089,12307,3189],{"class":3099},[3089,12309,12310],{"class":3192},"\"{Binding ElementName=DrawerLeft}\"",[3089,12312,3292],{"class":3177},[2964,12314,12315],{},"Drawer підтримує кілька режимів:",[3008,12317,12318,12324,12330],{},[3011,12319,12320,12323],{},[3086,12321,12322],{},"Push"," — контент зсувається",[3011,12325,12326,12329],{},[3086,12327,12328],{},"Cover"," — drawer накриває контент",[3011,12331,12332,12335],{},[3086,12333,12334],{},"Press"," — контент стискається",[2964,12337,12338,12341],{},[2983,12339,12340],{},"Popover"," — спливаюче вікно з контентом:",[3079,12343,12345],{"className":3168,"code":12344,"language":3170,"meta":3084,"style":3084},"\u003CButton Content=\"Показати інфо\">\n    \u003Chc:Interaction.Triggers>\n        \u003Chc:EventTrigger EventName=\"Click\">\n            \u003Chc:PopupAction>\n                \u003Chc:PopupAction.PopupElement>\n                    \u003CBorder Background=\"{DynamicResource RegionBrush}\" \n                            Padding=\"10\"\n                            CornerRadius=\"4\"\n                            Effect=\"{StaticResource EffectShadow2}\">\n                        \u003CTextBlock Text=\"Це додаткова інформація\"/>\n                    \u003C/Border>\n                \u003C/hc:PopupAction.PopupElement>\n            \u003C/hc:PopupAction>\n        \u003C/hc:EventTrigger>\n    \u003C/hc:Interaction.Triggers>\n\u003C/Button>\n",[3086,12346,12347,12362,12371,12388,12397,12406,12420,12429,12438,12449,12465,12474,12482,12490,12498,12506],{"__ignoreMap":3084},[3089,12348,12349,12351,12353,12355,12357,12360],{"class":3091,"line":3092},[3089,12350,3178],{"class":3177},[3089,12352,4118],{"class":3181},[3089,12354,3729],{"class":3185},[3089,12356,3189],{"class":3099},[3089,12358,12359],{"class":3192},"\"Показати інфо\"",[3089,12361,3240],{"class":3177},[3089,12363,12364,12366,12369],{"class":3091,"line":3196},[3089,12365,3246],{"class":3177},[3089,12367,12368],{"class":3181},"hc:Interaction.Triggers",[3089,12370,3240],{"class":3177},[3089,12372,12373,12375,12378,12381,12383,12386],{"class":3091,"line":3207},[3089,12374,3257],{"class":3177},[3089,12376,12377],{"class":3181},"hc:EventTrigger",[3089,12379,12380],{"class":3185}," EventName",[3089,12382,3189],{"class":3099},[3089,12384,12385],{"class":3192},"\"Click\"",[3089,12387,3240],{"class":3177},[3089,12389,12390,12392,12395],{"class":3091,"line":3218},[3089,12391,3268],{"class":3177},[3089,12393,12394],{"class":3181},"hc:PopupAction",[3089,12396,3240],{"class":3177},[3089,12398,12399,12401,12404],{"class":3091,"line":3229},[3089,12400,3286],{"class":3177},[3089,12402,12403],{"class":3181},"hc:PopupAction.PopupElement",[3089,12405,3240],{"class":3177},[3089,12407,12408,12410,12412,12414,12416,12418],{"class":3091,"line":3243},[3089,12409,9005],{"class":3177},[3089,12411,3882],{"class":3181},[3089,12413,3810],{"class":3185},[3089,12415,3189],{"class":3099},[3089,12417,12085],{"class":3192},[3089,12419,3526],{"class":3099},[3089,12421,12422,12425,12427],{"class":3091,"line":3254},[3089,12423,12424],{"class":3185},"                            Padding",[3089,12426,3189],{"class":3099},[3089,12428,8614],{"class":3192},[3089,12430,12431,12434,12436],{"class":3091,"line":3265},[3089,12432,12433],{"class":3185},"                            CornerRadius",[3089,12435,3189],{"class":3099},[3089,12437,10086],{"class":3192},[3089,12439,12440,12443,12445,12447],{"class":3091,"line":3276},[3089,12441,12442],{"class":3185},"                            Effect",[3089,12444,3189],{"class":3099},[3089,12446,9879],{"class":3192},[3089,12448,3240],{"class":3177},[3089,12450,12451,12454,12456,12458,12460,12463],{"class":3091,"line":3283},[3089,12452,12453],{"class":3177},"                        \u003C",[3089,12455,3583],{"class":3181},[3089,12457,3586],{"class":3185},[3089,12459,3189],{"class":3099},[3089,12461,12462],{"class":3192},"\"Це додаткова інформація\"",[3089,12464,3292],{"class":3177},[3089,12466,12467,12470,12472],{"class":3091,"line":3295},[3089,12468,12469],{"class":3177},"                    \u003C/",[3089,12471,3882],{"class":3181},[3089,12473,3240],{"class":3177},[3089,12475,12476,12478,12480],{"class":3091,"line":3301},[3089,12477,9047],{"class":3177},[3089,12479,12403],{"class":3181},[3089,12481,3240],{"class":3177},[3089,12483,12484,12486,12488],{"class":3091,"line":3311},[3089,12485,3314],{"class":3177},[3089,12487,12394],{"class":3181},[3089,12489,3240],{"class":3177},[3089,12491,12492,12494,12496],{"class":3091,"line":3321},[3089,12493,3324],{"class":3177},[3089,12495,12377],{"class":3181},[3089,12497,3240],{"class":3177},[3089,12499,12500,12502,12504],{"class":3091,"line":3331},[3089,12501,3334],{"class":3177},[3089,12503,12368],{"class":3181},[3089,12505,3240],{"class":3177},[3089,12507,12508,12510,12512],{"class":3091,"line":3341},[3089,12509,3344],{"class":3177},[3089,12511,4118],{"class":3181},[3089,12513,3240],{"class":3177},[2959,12515,12517],{"id":12516},"data-display-контроли","Data Display контроли",[3000,12519,12521],{"id":12520},"list-та-grid-контроли","List та Grid контроли",[2964,12523,12524,12527],{},[2983,12525,12526],{},"DataGrid"," — покращена таблиця з кращим виглядом:",[3079,12529,12531],{"className":3168,"code":12530,"language":3170,"meta":3084,"style":3084},"\u003Chc:DataGrid ItemsSource=\"{Binding Users}\"\n             AutoGenerateColumns=\"False\"\n             CanUserAddRows=\"False\"\n             HeadersVisibility=\"All\"\n             RowHeaderWidth=\"60\">\n    \u003CDataGrid.Columns>\n        \u003CDataGridTextColumn Header=\"ID\" Binding=\"{Binding Id}\" Width=\"80\"/>\n        \u003CDataGridTextColumn Header=\"Ім'я\" Binding=\"{Binding Name}\" Width=\"*\"/>\n        \u003CDataGridTextColumn Header=\"Email\" Binding=\"{Binding Email}\" Width=\"*\"/>\n        \u003CDataGridTextColumn Header=\"Роль\" Binding=\"{Binding Role}\" Width=\"120\"/>\n        \u003CDataGridTemplateColumn Header=\"Дії\" Width=\"150\">\n            \u003CDataGridTemplateColumn.CellTemplate>\n                \u003CDataTemplate>\n                    \u003CStackPanel Orientation=\"Horizontal\">\n                        \u003CButton Content=\"Редагувати\" \n                                Style=\"{StaticResource ButtonPrimary}\"\n                                Margin=\"0,0,5,0\"\n                                Padding=\"10,5\"/>\n                        \u003CButton Content=\"Видалити\" \n                                Style=\"{StaticResource ButtonDanger}\"\n                                Padding=\"10,5\"/>\n                    \u003C/StackPanel>\n                \u003C/DataTemplate>\n            \u003C/DataGridTemplateColumn.CellTemplate>\n        \u003C/DataGridTemplateColumn>\n    \u003C/DataGrid.Columns>\n\u003C/hc:DataGrid>\n",[3086,12532,12533,12548,12557,12566,12576,12588,12597,12628,12656,12683,12711,12733,12742,12751,12765,12780,12789,12799,12811,12826,12835,12845,12853,12861,12869,12877,12885],{"__ignoreMap":3084},[3089,12534,12535,12537,12540,12543,12545],{"class":3091,"line":3092},[3089,12536,3178],{"class":3177},[3089,12538,12539],{"class":3181},"hc:DataGrid",[3089,12541,12542],{"class":3185}," ItemsSource",[3089,12544,3189],{"class":3099},[3089,12546,12547],{"class":3192},"\"{Binding Users}\"\n",[3089,12549,12550,12553,12555],{"class":3091,"line":3196},[3089,12551,12552],{"class":3185},"             AutoGenerateColumns",[3089,12554,3189],{"class":3099},[3089,12556,10418],{"class":3192},[3089,12558,12559,12562,12564],{"class":3091,"line":3207},[3089,12560,12561],{"class":3185},"             CanUserAddRows",[3089,12563,3189],{"class":3099},[3089,12565,10418],{"class":3192},[3089,12567,12568,12571,12573],{"class":3091,"line":3218},[3089,12569,12570],{"class":3185},"             HeadersVisibility",[3089,12572,3189],{"class":3099},[3089,12574,12575],{"class":3192},"\"All\"\n",[3089,12577,12578,12581,12583,12586],{"class":3091,"line":3229},[3089,12579,12580],{"class":3185},"             RowHeaderWidth",[3089,12582,3189],{"class":3099},[3089,12584,12585],{"class":3192},"\"60\"",[3089,12587,3240],{"class":3177},[3089,12589,12590,12592,12595],{"class":3091,"line":3243},[3089,12591,3246],{"class":3177},[3089,12593,12594],{"class":3181},"DataGrid.Columns",[3089,12596,3240],{"class":3177},[3089,12598,12599,12601,12604,12606,12608,12611,12614,12616,12619,12621,12623,12626],{"class":3091,"line":3254},[3089,12600,3257],{"class":3177},[3089,12602,12603],{"class":3181},"DataGridTextColumn",[3089,12605,10281],{"class":3185},[3089,12607,3189],{"class":3099},[3089,12609,12610],{"class":3192},"\"ID\"",[3089,12612,12613],{"class":3185}," Binding",[3089,12615,3189],{"class":3099},[3089,12617,12618],{"class":3192},"\"{Binding Id}\"",[3089,12620,8880],{"class":3185},[3089,12622,3189],{"class":3099},[3089,12624,12625],{"class":3192},"\"80\"",[3089,12627,3292],{"class":3177},[3089,12629,12630,12632,12634,12636,12638,12640,12642,12644,12647,12649,12651,12654],{"class":3091,"line":3265},[3089,12631,3257],{"class":3177},[3089,12633,12603],{"class":3181},[3089,12635,10281],{"class":3185},[3089,12637,3189],{"class":3099},[3089,12639,10321],{"class":3192},[3089,12641,12613],{"class":3185},[3089,12643,3189],{"class":3099},[3089,12645,12646],{"class":3192},"\"{Binding Name}\"",[3089,12648,8880],{"class":3185},[3089,12650,3189],{"class":3099},[3089,12652,12653],{"class":3192},"\"*\"",[3089,12655,3292],{"class":3177},[3089,12657,12658,12660,12662,12664,12666,12668,12670,12672,12675,12677,12679,12681],{"class":3091,"line":3276},[3089,12659,3257],{"class":3177},[3089,12661,12603],{"class":3181},[3089,12663,10281],{"class":3185},[3089,12665,3189],{"class":3099},[3089,12667,10342],{"class":3192},[3089,12669,12613],{"class":3185},[3089,12671,3189],{"class":3099},[3089,12673,12674],{"class":3192},"\"{Binding Email}\"",[3089,12676,8880],{"class":3185},[3089,12678,3189],{"class":3099},[3089,12680,12653],{"class":3192},[3089,12682,3292],{"class":3177},[3089,12684,12685,12687,12689,12691,12693,12696,12698,12700,12703,12705,12707,12709],{"class":3091,"line":3283},[3089,12686,3257],{"class":3177},[3089,12688,12603],{"class":3181},[3089,12690,10281],{"class":3185},[3089,12692,3189],{"class":3099},[3089,12694,12695],{"class":3192},"\"Роль\"",[3089,12697,12613],{"class":3185},[3089,12699,3189],{"class":3099},[3089,12701,12702],{"class":3192},"\"{Binding Role}\"",[3089,12704,8880],{"class":3185},[3089,12706,3189],{"class":3099},[3089,12708,9460],{"class":3192},[3089,12710,3292],{"class":3177},[3089,12712,12713,12715,12718,12720,12722,12725,12727,12729,12731],{"class":3091,"line":3295},[3089,12714,3257],{"class":3177},[3089,12716,12717],{"class":3181},"DataGridTemplateColumn",[3089,12719,10281],{"class":3185},[3089,12721,3189],{"class":3099},[3089,12723,12724],{"class":3192},"\"Дії\"",[3089,12726,8880],{"class":3185},[3089,12728,3189],{"class":3099},[3089,12730,8885],{"class":3192},[3089,12732,3240],{"class":3177},[3089,12734,12735,12737,12740],{"class":3091,"line":3301},[3089,12736,3268],{"class":3177},[3089,12738,12739],{"class":3181},"DataGridTemplateColumn.CellTemplate",[3089,12741,3240],{"class":3177},[3089,12743,12744,12746,12749],{"class":3091,"line":3311},[3089,12745,3286],{"class":3177},[3089,12747,12748],{"class":3181},"DataTemplate",[3089,12750,3240],{"class":3177},[3089,12752,12753,12755,12757,12759,12761,12763],{"class":3091,"line":3321},[3089,12754,9005],{"class":3177},[3089,12756,3574],{"class":3181},[3089,12758,6384],{"class":3185},[3089,12760,3189],{"class":3099},[3089,12762,6389],{"class":3192},[3089,12764,3240],{"class":3177},[3089,12766,12767,12769,12771,12773,12775,12778],{"class":3091,"line":3331},[3089,12768,12453],{"class":3177},[3089,12770,4118],{"class":3181},[3089,12772,3729],{"class":3185},[3089,12774,3189],{"class":3099},[3089,12776,12777],{"class":3192},"\"Редагувати\"",[3089,12779,3526],{"class":3099},[3089,12781,12782,12785,12787],{"class":3091,"line":3341},[3089,12783,12784],{"class":3185},"                                Style",[3089,12786,3189],{"class":3099},[3089,12788,3747],{"class":3192},[3089,12790,12791,12794,12796],{"class":3091,"line":3660},[3089,12792,12793],{"class":3185},"                                Margin",[3089,12795,3189],{"class":3099},[3089,12797,12798],{"class":3192},"\"0,0,5,0\"\n",[3089,12800,12801,12804,12806,12809],{"class":3091,"line":3673},[3089,12802,12803],{"class":3185},"                                Padding",[3089,12805,3189],{"class":3099},[3089,12807,12808],{"class":3192},"\"10,5\"",[3089,12810,3292],{"class":3177},[3089,12812,12813,12815,12817,12819,12821,12824],{"class":3091,"line":3678},[3089,12814,12453],{"class":3177},[3089,12816,4118],{"class":3181},[3089,12818,3729],{"class":3185},[3089,12820,3189],{"class":3099},[3089,12822,12823],{"class":3192},"\"Видалити\"",[3089,12825,3526],{"class":3099},[3089,12827,12828,12830,12832],{"class":3091,"line":3693},[3089,12829,12784],{"class":3185},[3089,12831,3189],{"class":3099},[3089,12833,12834],{"class":3192},"\"{StaticResource ButtonDanger}\"\n",[3089,12836,12837,12839,12841,12843],{"class":3091,"line":3704},[3089,12838,12803],{"class":3185},[3089,12840,3189],{"class":3099},[3089,12842,12808],{"class":3192},[3089,12844,3292],{"class":3177},[3089,12846,12847,12849,12851],{"class":3091,"line":3716},[3089,12848,12469],{"class":3177},[3089,12850,3574],{"class":3181},[3089,12852,3240],{"class":3177},[3089,12854,12855,12857,12859],{"class":3091,"line":3721},[3089,12856,9047],{"class":3177},[3089,12858,12748],{"class":3181},[3089,12860,3240],{"class":3177},[3089,12862,12863,12865,12867],{"class":3091,"line":3739},[3089,12864,3314],{"class":3177},[3089,12866,12739],{"class":3181},[3089,12868,3240],{"class":3177},[3089,12870,12871,12873,12875],{"class":3091,"line":3750},[3089,12872,3324],{"class":3177},[3089,12874,12717],{"class":3181},[3089,12876,3240],{"class":3177},[3089,12878,12879,12881,12883],{"class":3091,"line":3763},[3089,12880,3334],{"class":3177},[3089,12882,12594],{"class":3181},[3089,12884,3240],{"class":3177},[3089,12886,12887,12889,12891],{"class":3091,"line":3772},[3089,12888,3344],{"class":3177},[3089,12890,12539],{"class":3181},[3089,12892,3240],{"class":3177},[2964,12894,12895],{},"HandyControl DataGrid автоматично застосовує стилі для:",[3008,12897,12898,12901,12904,12907],{},[3011,12899,12900],{},"Заголовків колонок",[3011,12902,12903],{},"Рядків (з hover ефектом)",[3011,12905,12906],{},"Виділення вибраного рядка",[3011,12908,12909],{},"Сортування (іконки стрілок)",[2964,12911,12912,12915],{},[2983,12913,12914],{},"ListBox"," — покращений список:",[3079,12917,12919],{"className":3168,"code":12918,"language":3170,"meta":3084,"style":3084},"\u003Chc:ListBox ItemsSource=\"{Binding Items}\"\n            Style=\"{StaticResource ListBoxCustom}\">\n    \u003Chc:ListBox.ItemTemplate>\n        \u003CDataTemplate>\n            \u003CBorder Padding=\"10\" \n                    BorderThickness=\"0,0,0,1\" \n                    BorderBrush=\"{DynamicResource BorderBrush}\">\n                \u003CStackPanel>\n                    \u003CTextBlock Text=\"{Binding Title}\" \n                               FontWeight=\"Bold\" \n                               FontSize=\"14\"/>\n                    \u003CTextBlock Text=\"{Binding Description}\" \n                               Foreground=\"{DynamicResource ThirdlyTextBrush}\"\n                               TextWrapping=\"Wrap\"\n                               Margin=\"0,5,0,0\"/>\n                \u003C/StackPanel>\n            \u003C/Border>\n        \u003C/DataTemplate>\n    \u003C/hc:ListBox.ItemTemplate>\n\u003C/hc:ListBox>\n",[3086,12920,12921,12935,12946,12955,12963,12977,12989,13000,13008,13023,13034,13046,13061,13071,13080,13092,13100,13108,13116,13124],{"__ignoreMap":3084},[3089,12922,12923,12925,12928,12930,12932],{"class":3091,"line":3092},[3089,12924,3178],{"class":3177},[3089,12926,12927],{"class":3181},"hc:ListBox",[3089,12929,12542],{"class":3185},[3089,12931,3189],{"class":3099},[3089,12933,12934],{"class":3192},"\"{Binding Items}\"\n",[3089,12936,12937,12939,12941,12944],{"class":3091,"line":3196},[3089,12938,7487],{"class":3185},[3089,12940,3189],{"class":3099},[3089,12942,12943],{"class":3192},"\"{StaticResource ListBoxCustom}\"",[3089,12945,3240],{"class":3177},[3089,12947,12948,12950,12953],{"class":3091,"line":3207},[3089,12949,3246],{"class":3177},[3089,12951,12952],{"class":3181},"hc:ListBox.ItemTemplate",[3089,12954,3240],{"class":3177},[3089,12956,12957,12959,12961],{"class":3091,"line":3218},[3089,12958,3257],{"class":3177},[3089,12960,12748],{"class":3181},[3089,12962,3240],{"class":3177},[3089,12964,12965,12967,12969,12971,12973,12975],{"class":3091,"line":3229},[3089,12966,3268],{"class":3177},[3089,12968,3882],{"class":3181},[3089,12970,3901],{"class":3185},[3089,12972,3189],{"class":3099},[3089,12974,3906],{"class":3192},[3089,12976,3526],{"class":3099},[3089,12978,12979,12982,12984,12987],{"class":3091,"line":3243},[3089,12980,12981],{"class":3185},"                    BorderThickness",[3089,12983,3189],{"class":3099},[3089,12985,12986],{"class":3192},"\"0,0,0,1\"",[3089,12988,3526],{"class":3099},[3089,12990,12991,12994,12996,12998],{"class":3091,"line":3254},[3089,12992,12993],{"class":3185},"                    BorderBrush",[3089,12995,3189],{"class":3099},[3089,12997,12117],{"class":3192},[3089,12999,3240],{"class":3177},[3089,13001,13002,13004,13006],{"class":3091,"line":3265},[3089,13003,3286],{"class":3177},[3089,13005,3574],{"class":3181},[3089,13007,3240],{"class":3177},[3089,13009,13010,13012,13014,13016,13018,13021],{"class":3091,"line":3276},[3089,13011,9005],{"class":3177},[3089,13013,3583],{"class":3181},[3089,13015,3586],{"class":3185},[3089,13017,3189],{"class":3099},[3089,13019,13020],{"class":3192},"\"{Binding Title}\"",[3089,13022,3526],{"class":3099},[3089,13024,13025,13028,13030,13032],{"class":3091,"line":3283},[3089,13026,13027],{"class":3185},"                               FontWeight",[3089,13029,3189],{"class":3099},[3089,13031,9102],{"class":3192},[3089,13033,3526],{"class":3099},[3089,13035,13036,13039,13041,13044],{"class":3091,"line":3295},[3089,13037,13038],{"class":3185},"                               FontSize",[3089,13040,3189],{"class":3099},[3089,13042,13043],{"class":3192},"\"14\"",[3089,13045,3292],{"class":3177},[3089,13047,13048,13050,13052,13054,13056,13059],{"class":3091,"line":3301},[3089,13049,9005],{"class":3177},[3089,13051,3583],{"class":3181},[3089,13053,3586],{"class":3185},[3089,13055,3189],{"class":3099},[3089,13057,13058],{"class":3192},"\"{Binding Description}\"",[3089,13060,3526],{"class":3099},[3089,13062,13063,13066,13068],{"class":3091,"line":3311},[3089,13064,13065],{"class":3185},"                               Foreground",[3089,13067,3189],{"class":3099},[3089,13069,13070],{"class":3192},"\"{DynamicResource ThirdlyTextBrush}\"\n",[3089,13072,13073,13076,13078],{"class":3091,"line":3321},[3089,13074,13075],{"class":3185},"                               TextWrapping",[3089,13077,3189],{"class":3099},[3089,13079,9377],{"class":3192},[3089,13081,13082,13085,13087,13090],{"class":3091,"line":3331},[3089,13083,13084],{"class":3185},"                               Margin",[3089,13086,3189],{"class":3099},[3089,13088,13089],{"class":3192},"\"0,5,0,0\"",[3089,13091,3292],{"class":3177},[3089,13093,13094,13096,13098],{"class":3091,"line":3341},[3089,13095,9047],{"class":3177},[3089,13097,3574],{"class":3181},[3089,13099,3240],{"class":3177},[3089,13101,13102,13104,13106],{"class":3091,"line":3660},[3089,13103,3314],{"class":3177},[3089,13105,3882],{"class":3181},[3089,13107,3240],{"class":3177},[3089,13109,13110,13112,13114],{"class":3091,"line":3673},[3089,13111,3324],{"class":3177},[3089,13113,12748],{"class":3181},[3089,13115,3240],{"class":3177},[3089,13117,13118,13120,13122],{"class":3091,"line":3678},[3089,13119,3334],{"class":3177},[3089,13121,12952],{"class":3181},[3089,13123,3240],{"class":3177},[3089,13125,13126,13128,13130],{"class":3091,"line":3693},[3089,13127,3344],{"class":3177},[3089,13129,12927],{"class":3181},[3089,13131,3240],{"class":3177},[2964,13133,13134,13137],{},[2983,13135,13136],{},"TreeView"," — покращене дерево:",[3079,13139,13141],{"className":3168,"code":13140,"language":3170,"meta":3084,"style":3084},"\u003Chc:TreeView ItemsSource=\"{Binding FolderStructure}\">\n    \u003Chc:TreeView.ItemTemplate>\n        \u003CHierarchicalDataTemplate ItemsSource=\"{Binding Children}\">\n            \u003CStackPanel Orientation=\"Horizontal\">\n                \u003CPath Data=\"{StaticResource FolderGeometry}\" \n                      Fill=\"{DynamicResource PrimaryBrush}\"\n                      Width=\"16\" Height=\"16\"\n                      Margin=\"0,0,5,0\"/>\n                \u003CTextBlock Text=\"{Binding Name}\"/>\n            \u003C/StackPanel>\n        \u003C/HierarchicalDataTemplate>\n    \u003C/hc:TreeView.ItemTemplate>\n\u003C/hc:TreeView>\n",[3086,13142,13143,13159,13168,13184,13198,13213,13223,13238,13250,13264,13272,13280,13288],{"__ignoreMap":3084},[3089,13144,13145,13147,13150,13152,13154,13157],{"class":3091,"line":3092},[3089,13146,3178],{"class":3177},[3089,13148,13149],{"class":3181},"hc:TreeView",[3089,13151,12542],{"class":3185},[3089,13153,3189],{"class":3099},[3089,13155,13156],{"class":3192},"\"{Binding FolderStructure}\"",[3089,13158,3240],{"class":3177},[3089,13160,13161,13163,13166],{"class":3091,"line":3196},[3089,13162,3246],{"class":3177},[3089,13164,13165],{"class":3181},"hc:TreeView.ItemTemplate",[3089,13167,3240],{"class":3177},[3089,13169,13170,13172,13175,13177,13179,13182],{"class":3091,"line":3207},[3089,13171,3257],{"class":3177},[3089,13173,13174],{"class":3181},"HierarchicalDataTemplate",[3089,13176,12542],{"class":3185},[3089,13178,3189],{"class":3099},[3089,13180,13181],{"class":3192},"\"{Binding Children}\"",[3089,13183,3240],{"class":3177},[3089,13185,13186,13188,13190,13192,13194,13196],{"class":3091,"line":3218},[3089,13187,3268],{"class":3177},[3089,13189,3574],{"class":3181},[3089,13191,6384],{"class":3185},[3089,13193,3189],{"class":3099},[3089,13195,6389],{"class":3192},[3089,13197,3240],{"class":3177},[3089,13199,13200,13202,13204,13206,13208,13211],{"class":3091,"line":3229},[3089,13201,3286],{"class":3177},[3089,13203,6719],{"class":3181},[3089,13205,6722],{"class":3185},[3089,13207,3189],{"class":3099},[3089,13209,13210],{"class":3192},"\"{StaticResource FolderGeometry}\"",[3089,13212,3526],{"class":3099},[3089,13214,13215,13218,13220],{"class":3091,"line":3243},[3089,13216,13217],{"class":3185},"                      Fill",[3089,13219,3189],{"class":3099},[3089,13221,13222],{"class":3192},"\"{DynamicResource PrimaryBrush}\"\n",[3089,13224,13225,13227,13229,13231,13233,13235],{"class":3091,"line":3254},[3089,13226,8825],{"class":3185},[3089,13228,3189],{"class":3099},[3089,13230,6749],{"class":3192},[3089,13232,6752],{"class":3185},[3089,13234,3189],{"class":3099},[3089,13236,13237],{"class":3192},"\"16\"\n",[3089,13239,13240,13243,13245,13248],{"class":3091,"line":3265},[3089,13241,13242],{"class":3185},"                      Margin",[3089,13244,3189],{"class":3099},[3089,13246,13247],{"class":3192},"\"0,0,5,0\"",[3089,13249,3292],{"class":3177},[3089,13251,13252,13254,13256,13258,13260,13262],{"class":3091,"line":3276},[3089,13253,3286],{"class":3177},[3089,13255,3583],{"class":3181},[3089,13257,3586],{"class":3185},[3089,13259,3189],{"class":3099},[3089,13261,12646],{"class":3192},[3089,13263,3292],{"class":3177},[3089,13265,13266,13268,13270],{"class":3091,"line":3283},[3089,13267,3314],{"class":3177},[3089,13269,3574],{"class":3181},[3089,13271,3240],{"class":3177},[3089,13273,13274,13276,13278],{"class":3091,"line":3295},[3089,13275,3324],{"class":3177},[3089,13277,13174],{"class":3181},[3089,13279,3240],{"class":3177},[3089,13281,13282,13284,13286],{"class":3091,"line":3301},[3089,13283,3334],{"class":3177},[3089,13285,13165],{"class":3181},[3089,13287,3240],{"class":3177},[3089,13289,13290,13292,13294],{"class":3091,"line":3311},[3089,13291,3344],{"class":3177},[3089,13293,13149],{"class":3181},[3089,13295,3240],{"class":3177},[2964,13297,13298,13301],{},[2983,13299,13300],{},"PropertyGrid"," — для редагування властивостей об'єкта:",[3079,13303,13305],{"className":3168,"code":13304,"language":3170,"meta":3084,"style":3084},"\u003Chc:PropertyGrid SelectedObject=\"{Binding CurrentItem}\"\n                 MaxTitleWidth=\"150\"\n                 MinTitleWidth=\"100\"/>\n",[3086,13306,13307,13322,13332],{"__ignoreMap":3084},[3089,13308,13309,13311,13314,13317,13319],{"class":3091,"line":3092},[3089,13310,3178],{"class":3177},[3089,13312,13313],{"class":3181},"hc:PropertyGrid",[3089,13315,13316],{"class":3185}," SelectedObject",[3089,13318,3189],{"class":3099},[3089,13320,13321],{"class":3192},"\"{Binding CurrentItem}\"\n",[3089,13323,13324,13327,13329],{"class":3091,"line":3196},[3089,13325,13326],{"class":3185},"                 MaxTitleWidth",[3089,13328,3189],{"class":3099},[3089,13330,13331],{"class":3192},"\"150\"\n",[3089,13333,13334,13337,13339,13341],{"class":3091,"line":3207},[3089,13335,13336],{"class":3185},"                 MinTitleWidth",[3089,13338,3189],{"class":3099},[3089,13340,8922],{"class":3192},[3089,13342,3292],{"class":3177},[2964,13344,13345],{},"PropertyGrid автоматично генерує UI для редагування властивостей об'єкта на основі його типу та атрибутів.",[3079,13347,13349],{"className":4236,"code":13348,"language":4238,"meta":3084,"style":3084},"public class UserSettings\n{\n    [Category(\"Загальні\")]\n    [DisplayName(\"Ім'я користувача\")]\n    [Description(\"Ваше повне ім'я\")]\n    public string UserName { get; set; }\n    \n    [Category(\"Загальні\")]\n    [DisplayName(\"Email\")]\n    public string Email { get; set; }\n    \n    [Category(\"Інтерфейс\")]\n    [DisplayName(\"Темна тема\")]\n    public bool DarkTheme { get; set; }\n    \n    [Category(\"Інтерфейс\")]\n    [DisplayName(\"Мова\")]\n    public string Language { get; set; }\n}\n",[3086,13350,13351,13360,13364,13379,13392,13406,13425,13429,13441,13453,13472,13476,13489,13502,13521,13525,13537,13550,13569],{"__ignoreMap":3084},[3089,13352,13353,13355,13357],{"class":3091,"line":3092},[3089,13354,4269],{"class":4268},[3089,13356,4275],{"class":4268},[3089,13358,13359],{"class":4249}," UserSettings\n",[3089,13361,13362],{"class":3091,"line":3196},[3089,13363,4289],{"class":3099},[3089,13365,13366,13369,13372,13374,13376],{"class":3091,"line":3207},[3089,13367,13368],{"class":3099},"    [",[3089,13370,13371],{"class":4249},"Category",[3089,13373,4306],{"class":3099},[3089,13375,11598],{"class":3118},[3089,13377,13378],{"class":3099},")]\n",[3089,13380,13381,13383,13386,13388,13390],{"class":3091,"line":3218},[3089,13382,13368],{"class":3099},[3089,13384,13385],{"class":4249},"DisplayName",[3089,13387,4306],{"class":3099},[3089,13389,3935],{"class":3118},[3089,13391,13378],{"class":3099},[3089,13393,13394,13396,13399,13401,13404],{"class":3091,"line":3229},[3089,13395,13368],{"class":3099},[3089,13397,13398],{"class":4249},"Description",[3089,13400,4306],{"class":3099},[3089,13402,13403],{"class":3118},"\"Ваше повне ім'я\"",[3089,13405,13378],{"class":3099},[3089,13407,13408,13410,13412,13415,13417,13419,13421,13423],{"class":3091,"line":3243},[3089,13409,8043],{"class":4268},[3089,13411,8033],{"class":4268},[3089,13413,13414],{"class":4312}," UserName",[3089,13416,7859],{"class":3099},[3089,13418,7862],{"class":4268},[3089,13420,7865],{"class":3099},[3089,13422,7868],{"class":4268},[3089,13424,7871],{"class":3099},[3089,13426,13427],{"class":3091,"line":3254},[3089,13428,5024],{"class":3099},[3089,13430,13431,13433,13435,13437,13439],{"class":3091,"line":3265},[3089,13432,13368],{"class":3099},[3089,13434,13371],{"class":4249},[3089,13436,4306],{"class":3099},[3089,13438,11598],{"class":3118},[3089,13440,13378],{"class":3099},[3089,13442,13443,13445,13447,13449,13451],{"class":3091,"line":3276},[3089,13444,13368],{"class":3099},[3089,13446,13385],{"class":4249},[3089,13448,4306],{"class":3099},[3089,13450,10342],{"class":3118},[3089,13452,13378],{"class":3099},[3089,13454,13455,13457,13459,13462,13464,13466,13468,13470],{"class":3091,"line":3283},[3089,13456,8043],{"class":4268},[3089,13458,8033],{"class":4268},[3089,13460,13461],{"class":4312}," Email",[3089,13463,7859],{"class":3099},[3089,13465,7862],{"class":4268},[3089,13467,7865],{"class":3099},[3089,13469,7868],{"class":4268},[3089,13471,7871],{"class":3099},[3089,13473,13474],{"class":3091,"line":3295},[3089,13475,5024],{"class":3099},[3089,13477,13478,13480,13482,13484,13487],{"class":3091,"line":3301},[3089,13479,13368],{"class":3099},[3089,13481,13371],{"class":4249},[3089,13483,4306],{"class":3099},[3089,13485,13486],{"class":3118},"\"Інтерфейс\"",[3089,13488,13378],{"class":3099},[3089,13490,13491,13493,13495,13497,13500],{"class":3091,"line":3311},[3089,13492,13368],{"class":3099},[3089,13494,13385],{"class":4249},[3089,13496,4306],{"class":3099},[3089,13498,13499],{"class":3118},"\"Темна тема\"",[3089,13501,13378],{"class":3099},[3089,13503,13504,13506,13508,13511,13513,13515,13517,13519],{"class":3091,"line":3321},[3089,13505,8043],{"class":4268},[3089,13507,6883],{"class":4268},[3089,13509,13510],{"class":4312}," DarkTheme",[3089,13512,7859],{"class":3099},[3089,13514,7862],{"class":4268},[3089,13516,7865],{"class":3099},[3089,13518,7868],{"class":4268},[3089,13520,7871],{"class":3099},[3089,13522,13523],{"class":3091,"line":3331},[3089,13524,5024],{"class":3099},[3089,13526,13527,13529,13531,13533,13535],{"class":3091,"line":3341},[3089,13528,13368],{"class":3099},[3089,13530,13371],{"class":4249},[3089,13532,4306],{"class":3099},[3089,13534,13486],{"class":3118},[3089,13536,13378],{"class":3099},[3089,13538,13539,13541,13543,13545,13548],{"class":3091,"line":3660},[3089,13540,13368],{"class":3099},[3089,13542,13385],{"class":4249},[3089,13544,4306],{"class":3099},[3089,13546,13547],{"class":3118},"\"Мова\"",[3089,13549,13378],{"class":3099},[3089,13551,13552,13554,13556,13559,13561,13563,13565,13567],{"class":3091,"line":3673},[3089,13553,8043],{"class":4268},[3089,13555,8033],{"class":4268},[3089,13557,13558],{"class":4312}," Language",[3089,13560,7859],{"class":3099},[3089,13562,7862],{"class":4268},[3089,13564,7865],{"class":3099},[3089,13566,7868],{"class":4268},[3089,13568,7871],{"class":3099},[3089,13570,13571],{"class":3091,"line":3678},[3089,13572,4394],{"class":3099},[3000,13574,13576],{"id":13575},"badge-та-tag-контроли","Badge та Tag контроли",[2964,13578,13579,13582],{},[2983,13580,13581],{},"Badge"," — значок з числом (для сповіщень):",[3079,13584,13586],{"className":3168,"code":13585,"language":3170,"meta":3084,"style":3084},"\u003CButton Content=\"Повідомлення\" \n        hc:BadgeElement.Value=\"5\"\n        hc:BadgeElement.ShowBadge=\"True\"/>\n\n\u003C!-- Або як окремий контрол -->\n\u003Chc:Badge Value=\"99+\" \n          BadgeMargin=\"0,-10,-10,0\"\n          Status=\"Danger\">\n    \u003CBorder Width=\"50\" Height=\"50\" \n            Background=\"{DynamicResource PrimaryBrush}\"\n            CornerRadius=\"25\"/>\n\u003C/hc:Badge>\n",[3086,13587,13588,13603,13612,13623,13627,13632,13648,13658,13669,13689,13698,13709],{"__ignoreMap":3084},[3089,13589,13590,13592,13594,13596,13598,13601],{"class":3091,"line":3092},[3089,13591,3178],{"class":3177},[3089,13593,4118],{"class":3181},[3089,13595,3729],{"class":3185},[3089,13597,3189],{"class":3099},[3089,13599,13600],{"class":3192},"\"Повідомлення\"",[3089,13602,3526],{"class":3099},[3089,13604,13605,13608,13610],{"class":3091,"line":3196},[3089,13606,13607],{"class":3185},"        hc:BadgeElement.Value",[3089,13609,3189],{"class":3099},[3089,13611,9195],{"class":3192},[3089,13613,13614,13617,13619,13621],{"class":3091,"line":3207},[3089,13615,13616],{"class":3185},"        hc:BadgeElement.ShowBadge",[3089,13618,3189],{"class":3099},[3089,13620,7190],{"class":3192},[3089,13622,3292],{"class":3177},[3089,13624,13625],{"class":3091,"line":3218},[3089,13626,4263],{"emptyLinePlaceholder":4262},[3089,13628,13629],{"class":3091,"line":3229},[3089,13630,13631],{"class":3279},"\u003C!-- Або як окремий контрол -->\n",[3089,13633,13634,13636,13639,13641,13643,13646],{"class":3091,"line":3243},[3089,13635,3178],{"class":3177},[3089,13637,13638],{"class":3181},"hc:Badge",[3089,13640,6094],{"class":3185},[3089,13642,3189],{"class":3099},[3089,13644,13645],{"class":3192},"\"99+\"",[3089,13647,3526],{"class":3099},[3089,13649,13650,13653,13655],{"class":3091,"line":3254},[3089,13651,13652],{"class":3185},"          BadgeMargin",[3089,13654,3189],{"class":3099},[3089,13656,13657],{"class":3192},"\"0,-10,-10,0\"\n",[3089,13659,13660,13663,13665,13667],{"class":3091,"line":3265},[3089,13661,13662],{"class":3185},"          Status",[3089,13664,3189],{"class":3099},[3089,13666,6297],{"class":3192},[3089,13668,3240],{"class":3177},[3089,13670,13671,13673,13675,13677,13679,13681,13683,13685,13687],{"class":3091,"line":3276},[3089,13672,3246],{"class":3177},[3089,13674,3882],{"class":3181},[3089,13676,8880],{"class":3185},[3089,13678,3189],{"class":3099},[3089,13680,9803],{"class":3192},[3089,13682,6752],{"class":3185},[3089,13684,3189],{"class":3099},[3089,13686,9803],{"class":3192},[3089,13688,3526],{"class":3099},[3089,13690,13691,13694,13696],{"class":3091,"line":3283},[3089,13692,13693],{"class":3185},"            Background",[3089,13695,3189],{"class":3099},[3089,13697,13222],{"class":3192},[3089,13699,13700,13702,13704,13707],{"class":3091,"line":3295},[3089,13701,10081],{"class":3185},[3089,13703,3189],{"class":3099},[3089,13705,13706],{"class":3192},"\"25\"",[3089,13708,3292],{"class":3177},[3089,13710,13711,13713,13715],{"class":3091,"line":3301},[3089,13712,3344],{"class":3177},[3089,13714,13638],{"class":3181},[3089,13716,3240],{"class":3177},[2964,13718,13719],{},"Badge може відображати:",[3008,13721,13722,13725,13728],{},[3011,13723,13724],{},"Числа (з автоматичним скороченням: 99+)",[3011,13726,13727],{},"Статус (Success, Danger, Warning, Info)",[3011,13729,13730],{},"Dot (просто крапка без числа)",[2964,13732,13733,13736],{},[2983,13734,13735],{},"Tag"," — тег з можливістю видалення:",[3079,13738,13740],{"className":3168,"code":13739,"language":3170,"meta":3084,"style":3084},"\u003Chc:Tag Content=\"C#\" \n        ShowCloseButton=\"True\"\n        Closed=\"Tag_Closed\"/>\n\n\u003C!-- Список тегів -->\n\u003CItemsControl ItemsSource=\"{Binding Tags}\">\n    \u003CItemsControl.ItemsPanel>\n        \u003CItemsPanelTemplate>\n            \u003Chc:UniformSpacingPanel Spacing=\"5\" Orientation=\"Horizontal\"/>\n        \u003C/ItemsPanelTemplate>\n    \u003C/ItemsControl.ItemsPanel>\n    \u003CItemsControl.ItemTemplate>\n        \u003CDataTemplate>\n            \u003Chc:Tag Content=\"{Binding Name}\" \n                    ShowCloseButton=\"True\"\n                    Style=\"{StaticResource TagPrimary}\"/>\n        \u003C/DataTemplate>\n    \u003C/ItemsControl.ItemTemplate>\n\u003C/ItemsControl>\n",[3086,13741,13742,13758,13767,13779,13783,13788,13804,13813,13822,13842,13850,13858,13867,13875,13889,13898,13910,13918,13926],{"__ignoreMap":3084},[3089,13743,13744,13746,13749,13751,13753,13756],{"class":3091,"line":3092},[3089,13745,3178],{"class":3177},[3089,13747,13748],{"class":3181},"hc:Tag",[3089,13750,3729],{"class":3185},[3089,13752,3189],{"class":3099},[3089,13754,13755],{"class":3192},"\"C#\"",[3089,13757,3526],{"class":3099},[3089,13759,13760,13763,13765],{"class":3091,"line":3196},[3089,13761,13762],{"class":3185},"        ShowCloseButton",[3089,13764,3189],{"class":3099},[3089,13766,7411],{"class":3192},[3089,13768,13769,13772,13774,13777],{"class":3091,"line":3207},[3089,13770,13771],{"class":3185},"        Closed",[3089,13773,3189],{"class":3099},[3089,13775,13776],{"class":3192},"\"Tag_Closed\"",[3089,13778,3292],{"class":3177},[3089,13780,13781],{"class":3091,"line":3218},[3089,13782,4263],{"emptyLinePlaceholder":4262},[3089,13784,13785],{"class":3091,"line":3229},[3089,13786,13787],{"class":3279},"\u003C!-- Список тегів -->\n",[3089,13789,13790,13792,13795,13797,13799,13802],{"class":3091,"line":3243},[3089,13791,3178],{"class":3177},[3089,13793,13794],{"class":3181},"ItemsControl",[3089,13796,12542],{"class":3185},[3089,13798,3189],{"class":3099},[3089,13800,13801],{"class":3192},"\"{Binding Tags}\"",[3089,13803,3240],{"class":3177},[3089,13805,13806,13808,13811],{"class":3091,"line":3254},[3089,13807,3246],{"class":3177},[3089,13809,13810],{"class":3181},"ItemsControl.ItemsPanel",[3089,13812,3240],{"class":3177},[3089,13814,13815,13817,13820],{"class":3091,"line":3265},[3089,13816,3257],{"class":3177},[3089,13818,13819],{"class":3181},"ItemsPanelTemplate",[3089,13821,3240],{"class":3177},[3089,13823,13824,13826,13828,13830,13832,13834,13836,13838,13840],{"class":3091,"line":3276},[3089,13825,3268],{"class":3177},[3089,13827,9238],{"class":3181},[3089,13829,9241],{"class":3185},[3089,13831,3189],{"class":3099},[3089,13833,6426],{"class":3192},[3089,13835,6384],{"class":3185},[3089,13837,3189],{"class":3099},[3089,13839,6389],{"class":3192},[3089,13841,3292],{"class":3177},[3089,13843,13844,13846,13848],{"class":3091,"line":3283},[3089,13845,3324],{"class":3177},[3089,13847,13819],{"class":3181},[3089,13849,3240],{"class":3177},[3089,13851,13852,13854,13856],{"class":3091,"line":3295},[3089,13853,3334],{"class":3177},[3089,13855,13810],{"class":3181},[3089,13857,3240],{"class":3177},[3089,13859,13860,13862,13865],{"class":3091,"line":3301},[3089,13861,3246],{"class":3177},[3089,13863,13864],{"class":3181},"ItemsControl.ItemTemplate",[3089,13866,3240],{"class":3177},[3089,13868,13869,13871,13873],{"class":3091,"line":3311},[3089,13870,3257],{"class":3177},[3089,13872,12748],{"class":3181},[3089,13874,3240],{"class":3177},[3089,13876,13877,13879,13881,13883,13885,13887],{"class":3091,"line":3321},[3089,13878,3268],{"class":3177},[3089,13880,13748],{"class":3181},[3089,13882,3729],{"class":3185},[3089,13884,3189],{"class":3099},[3089,13886,12646],{"class":3192},[3089,13888,3526],{"class":3099},[3089,13890,13891,13894,13896],{"class":3091,"line":3331},[3089,13892,13893],{"class":3185},"                    ShowCloseButton",[3089,13895,3189],{"class":3099},[3089,13897,7411],{"class":3192},[3089,13899,13900,13903,13905,13908],{"class":3091,"line":3341},[3089,13901,13902],{"class":3185},"                    Style",[3089,13904,3189],{"class":3099},[3089,13906,13907],{"class":3192},"\"{StaticResource TagPrimary}\"",[3089,13909,3292],{"class":3177},[3089,13911,13912,13914,13916],{"class":3091,"line":3660},[3089,13913,3324],{"class":3177},[3089,13915,12748],{"class":3181},[3089,13917,3240],{"class":3177},[3089,13919,13920,13922,13924],{"class":3091,"line":3673},[3089,13921,3334],{"class":3177},[3089,13923,13864],{"class":3181},[3089,13925,3240],{"class":3177},[3089,13927,13928,13930,13932],{"class":3091,"line":3678},[3089,13929,3344],{"class":3177},[3089,13931,13794],{"class":3181},[3089,13933,3240],{"class":3177},[2964,13935,13936,13939],{},[2983,13937,13938],{},"Shield"," — shield badge (як на GitHub):",[3079,13941,13943],{"className":3168,"code":13942,"language":3170,"meta":3084,"style":3084},"\u003Chc:Shield Subject=\"Build\" \n           Status=\"Passing\" \n           Color=\"Success\"/>\n\n\u003Chc:Shield Subject=\"Version\" \n           Status=\"1.2.3\" \n           Color=\"Info\"/>\n\n\u003Chc:Shield Subject=\"License\" \n           Status=\"MIT\" \n           Color=\"Primary\"/>\n",[3086,13944,13945,13962,13974,13985,13989,14004,14015,14025,14029,14044,14055],{"__ignoreMap":3084},[3089,13946,13947,13949,13952,13955,13957,13960],{"class":3091,"line":3092},[3089,13948,3178],{"class":3177},[3089,13950,13951],{"class":3181},"hc:Shield",[3089,13953,13954],{"class":3185}," Subject",[3089,13956,3189],{"class":3099},[3089,13958,13959],{"class":3192},"\"Build\"",[3089,13961,3526],{"class":3099},[3089,13963,13964,13967,13969,13972],{"class":3091,"line":3196},[3089,13965,13966],{"class":3185},"           Status",[3089,13968,3189],{"class":3099},[3089,13970,13971],{"class":3192},"\"Passing\"",[3089,13973,3526],{"class":3099},[3089,13975,13976,13979,13981,13983],{"class":3091,"line":3207},[3089,13977,13978],{"class":3185},"           Color",[3089,13980,3189],{"class":3099},[3089,13982,6266],{"class":3192},[3089,13984,3292],{"class":3177},[3089,13986,13987],{"class":3091,"line":3218},[3089,13988,4263],{"emptyLinePlaceholder":4262},[3089,13990,13991,13993,13995,13997,13999,14002],{"class":3091,"line":3229},[3089,13992,3178],{"class":3177},[3089,13994,13951],{"class":3181},[3089,13996,13954],{"class":3185},[3089,13998,3189],{"class":3099},[3089,14000,14001],{"class":3192},"\"Version\"",[3089,14003,3526],{"class":3099},[3089,14005,14006,14008,14010,14013],{"class":3091,"line":3243},[3089,14007,13966],{"class":3185},[3089,14009,3189],{"class":3099},[3089,14011,14012],{"class":3192},"\"1.2.3\"",[3089,14014,3526],{"class":3099},[3089,14016,14017,14019,14021,14023],{"class":3091,"line":3254},[3089,14018,13978],{"class":3185},[3089,14020,3189],{"class":3099},[3089,14022,6359],{"class":3192},[3089,14024,3292],{"class":3177},[3089,14026,14027],{"class":3091,"line":3265},[3089,14028,4263],{"emptyLinePlaceholder":4262},[3089,14030,14031,14033,14035,14037,14039,14042],{"class":3091,"line":3276},[3089,14032,3178],{"class":3177},[3089,14034,13951],{"class":3181},[3089,14036,13954],{"class":3185},[3089,14038,3189],{"class":3099},[3089,14040,14041],{"class":3192},"\"License\"",[3089,14043,3526],{"class":3099},[3089,14045,14046,14048,14050,14053],{"class":3091,"line":3283},[3089,14047,13966],{"class":3185},[3089,14049,3189],{"class":3099},[3089,14051,14052],{"class":3192},"\"MIT\"",[3089,14054,3526],{"class":3099},[3089,14056,14057,14059,14061,14063],{"class":3091,"line":3295},[3089,14058,13978],{"class":3185},[3089,14060,3189],{"class":3099},[3089,14062,6234],{"class":3192},[3089,14064,3292],{"class":3177},[3789,14066,14067],{},[3079,14068,14070],{"className":3168,"code":14069,"language":3170,"meta":3084,"style":3084},"\u003CStackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n    \u003CBorder Background=\"#555\" Padding=\"8,4\" Margin=\"2,0,0,0\">\n        \u003CTextBlock Text=\"Build\" Foreground=\"White\" FontSize=\"11\"/>\n    \u003C/Border>\n    \u003CBorder Background=\"#27AE60\" Padding=\"8,4\">\n        \u003CTextBlock Text=\"Passing\" Foreground=\"White\" FontSize=\"11\"/>\n    \u003C/Border>\n    \n    \u003CBorder Background=\"#555\" Padding=\"8,4\" Margin=\"10,0,0,0\">\n        \u003CTextBlock Text=\"Version\" Foreground=\"White\" FontSize=\"11\"/>\n    \u003C/Border>\n    \u003CBorder Background=\"#3498DB\" Padding=\"8,4\">\n        \u003CTextBlock Text=\"1.2.3\" Foreground=\"White\" FontSize=\"11\"/>\n    \u003C/Border>\n\u003C/StackPanel>\n",[3086,14071,14072,14098,14127,14154,14162,14182,14208,14216,14220,14247,14273,14281,14301,14327,14335],{"__ignoreMap":3084},[3089,14073,14074,14076,14078,14080,14082,14084,14086,14088,14090,14092,14094,14096],{"class":3091,"line":3092},[3089,14075,3178],{"class":3177},[3089,14077,3574],{"class":3181},[3089,14079,6384],{"class":3185},[3089,14081,3189],{"class":3099},[3089,14083,6389],{"class":3192},[3089,14085,6392],{"class":3185},[3089,14087,3189],{"class":3099},[3089,14089,6397],{"class":3192},[3089,14091,6400],{"class":3185},[3089,14093,3189],{"class":3099},[3089,14095,6397],{"class":3192},[3089,14097,3240],{"class":3177},[3089,14099,14100,14102,14104,14106,14108,14111,14113,14115,14118,14120,14122,14125],{"class":3091,"line":3196},[3089,14101,3246],{"class":3177},[3089,14103,3882],{"class":3181},[3089,14105,3810],{"class":3185},[3089,14107,3189],{"class":3099},[3089,14109,14110],{"class":3192},"\"#555\"",[3089,14112,3901],{"class":3185},[3089,14114,3189],{"class":3099},[3089,14116,14117],{"class":3192},"\"8,4\"",[3089,14119,3560],{"class":3185},[3089,14121,3189],{"class":3099},[3089,14123,14124],{"class":3192},"\"2,0,0,0\"",[3089,14126,3240],{"class":3177},[3089,14128,14129,14131,14133,14135,14137,14139,14141,14143,14145,14147,14149,14152],{"class":3091,"line":3207},[3089,14130,3257],{"class":3177},[3089,14132,3583],{"class":3181},[3089,14134,3586],{"class":3185},[3089,14136,3189],{"class":3099},[3089,14138,13959],{"class":3192},[3089,14140,3946],{"class":3185},[3089,14142,3189],{"class":3099},[3089,14144,3815],{"class":3192},[3089,14146,3938],{"class":3185},[3089,14148,3189],{"class":3099},[3089,14150,14151],{"class":3192},"\"11\"",[3089,14153,3292],{"class":3177},[3089,14155,14156,14158,14160],{"class":3091,"line":3218},[3089,14157,3334],{"class":3177},[3089,14159,3882],{"class":3181},[3089,14161,3240],{"class":3177},[3089,14163,14164,14166,14168,14170,14172,14174,14176,14178,14180],{"class":3091,"line":3229},[3089,14165,3246],{"class":3177},[3089,14167,3882],{"class":3181},[3089,14169,3810],{"class":3185},[3089,14171,3189],{"class":3099},[3089,14173,6529],{"class":3192},[3089,14175,3901],{"class":3185},[3089,14177,3189],{"class":3099},[3089,14179,14117],{"class":3192},[3089,14181,3240],{"class":3177},[3089,14183,14184,14186,14188,14190,14192,14194,14196,14198,14200,14202,14204,14206],{"class":3091,"line":3243},[3089,14185,3257],{"class":3177},[3089,14187,3583],{"class":3181},[3089,14189,3586],{"class":3185},[3089,14191,3189],{"class":3099},[3089,14193,13971],{"class":3192},[3089,14195,3946],{"class":3185},[3089,14197,3189],{"class":3099},[3089,14199,3815],{"class":3192},[3089,14201,3938],{"class":3185},[3089,14203,3189],{"class":3099},[3089,14205,14151],{"class":3192},[3089,14207,3292],{"class":3177},[3089,14209,14210,14212,14214],{"class":3091,"line":3254},[3089,14211,3334],{"class":3177},[3089,14213,3882],{"class":3181},[3089,14215,3240],{"class":3177},[3089,14217,14218],{"class":3091,"line":3265},[3089,14219,5024],{"class":3099},[3089,14221,14222,14224,14226,14228,14230,14232,14234,14236,14238,14240,14242,14245],{"class":3091,"line":3276},[3089,14223,3246],{"class":3177},[3089,14225,3882],{"class":3181},[3089,14227,3810],{"class":3185},[3089,14229,3189],{"class":3099},[3089,14231,14110],{"class":3192},[3089,14233,3901],{"class":3185},[3089,14235,3189],{"class":3099},[3089,14237,14117],{"class":3192},[3089,14239,3560],{"class":3185},[3089,14241,3189],{"class":3099},[3089,14243,14244],{"class":3192},"\"10,0,0,0\"",[3089,14246,3240],{"class":3177},[3089,14248,14249,14251,14253,14255,14257,14259,14261,14263,14265,14267,14269,14271],{"class":3091,"line":3283},[3089,14250,3257],{"class":3177},[3089,14252,3583],{"class":3181},[3089,14254,3586],{"class":3185},[3089,14256,3189],{"class":3099},[3089,14258,14001],{"class":3192},[3089,14260,3946],{"class":3185},[3089,14262,3189],{"class":3099},[3089,14264,3815],{"class":3192},[3089,14266,3938],{"class":3185},[3089,14268,3189],{"class":3099},[3089,14270,14151],{"class":3192},[3089,14272,3292],{"class":3177},[3089,14274,14275,14277,14279],{"class":3091,"line":3295},[3089,14276,3334],{"class":3177},[3089,14278,3882],{"class":3181},[3089,14280,3240],{"class":3177},[3089,14282,14283,14285,14287,14289,14291,14293,14295,14297,14299],{"class":3091,"line":3301},[3089,14284,3246],{"class":3177},[3089,14286,3882],{"class":3181},[3089,14288,3810],{"class":3185},[3089,14290,3189],{"class":3099},[3089,14292,6664],{"class":3192},[3089,14294,3901],{"class":3185},[3089,14296,3189],{"class":3099},[3089,14298,14117],{"class":3192},[3089,14300,3240],{"class":3177},[3089,14302,14303,14305,14307,14309,14311,14313,14315,14317,14319,14321,14323,14325],{"class":3091,"line":3311},[3089,14304,3257],{"class":3177},[3089,14306,3583],{"class":3181},[3089,14308,3586],{"class":3185},[3089,14310,3189],{"class":3099},[3089,14312,14012],{"class":3192},[3089,14314,3946],{"class":3185},[3089,14316,3189],{"class":3099},[3089,14318,3815],{"class":3192},[3089,14320,3938],{"class":3185},[3089,14322,3189],{"class":3099},[3089,14324,14151],{"class":3192},[3089,14326,3292],{"class":3177},[3089,14328,14329,14331,14333],{"class":3091,"line":3321},[3089,14330,3334],{"class":3177},[3089,14332,3882],{"class":3181},[3089,14334,3240],{"class":3177},[3089,14336,14337,14339,14341],{"class":3091,"line":3331},[3089,14338,3344],{"class":3177},[3089,14340,3574],{"class":3181},[3089,14342,3240],{"class":3177},[3000,14344,14346],{"id":14345},"timeline-та-steps","Timeline та Steps",[2964,14348,14349,14352],{},[2983,14350,14351],{},"Timeline"," — часова шкала для відображення історії подій:",[3079,14354,14356],{"className":3168,"code":14355,"language":3170,"meta":3084,"style":3084},"\u003Chc:Timeline ItemsSource=\"{Binding Events}\">\n    \u003Chc:Timeline.ItemTemplate>\n        \u003CDataTemplate>\n            \u003CBorder Padding=\"10\" Margin=\"0,0,0,20\">\n                \u003CStackPanel>\n                    \u003CTextBlock Text=\"{Binding Title}\" \n                               FontWeight=\"Bold\" \n                               FontSize=\"14\"/>\n                    \u003CTextBlock Text=\"{Binding Date, StringFormat='dd.MM.yyyy HH:mm'}\" \n                               Foreground=\"{DynamicResource ThirdlyTextBrush}\"\n                               FontSize=\"12\"\n                               Margin=\"0,5,0,5\"/>\n                    \u003CTextBlock Text=\"{Binding Description}\" \n                               TextWrapping=\"Wrap\"/>\n                \u003C/StackPanel>\n            \u003C/Border>\n        \u003C/DataTemplate>\n    \u003C/hc:Timeline.ItemTemplate>\n\u003C/hc:Timeline>\n",[3086,14357,14358,14374,14383,14391,14411,14419,14433,14443,14453,14468,14476,14485,14496,14510,14521,14529,14537,14545,14553],{"__ignoreMap":3084},[3089,14359,14360,14362,14365,14367,14369,14372],{"class":3091,"line":3092},[3089,14361,3178],{"class":3177},[3089,14363,14364],{"class":3181},"hc:Timeline",[3089,14366,12542],{"class":3185},[3089,14368,3189],{"class":3099},[3089,14370,14371],{"class":3192},"\"{Binding Events}\"",[3089,14373,3240],{"class":3177},[3089,14375,14376,14378,14381],{"class":3091,"line":3196},[3089,14377,3246],{"class":3177},[3089,14379,14380],{"class":3181},"hc:Timeline.ItemTemplate",[3089,14382,3240],{"class":3177},[3089,14384,14385,14387,14389],{"class":3091,"line":3207},[3089,14386,3257],{"class":3177},[3089,14388,12748],{"class":3181},[3089,14390,3240],{"class":3177},[3089,14392,14393,14395,14397,14399,14401,14403,14405,14407,14409],{"class":3091,"line":3218},[3089,14394,3268],{"class":3177},[3089,14396,3882],{"class":3181},[3089,14398,3901],{"class":3185},[3089,14400,3189],{"class":3099},[3089,14402,3906],{"class":3192},[3089,14404,3560],{"class":3185},[3089,14406,3189],{"class":3099},[3089,14408,3625],{"class":3192},[3089,14410,3240],{"class":3177},[3089,14412,14413,14415,14417],{"class":3091,"line":3229},[3089,14414,3286],{"class":3177},[3089,14416,3574],{"class":3181},[3089,14418,3240],{"class":3177},[3089,14420,14421,14423,14425,14427,14429,14431],{"class":3091,"line":3243},[3089,14422,9005],{"class":3177},[3089,14424,3583],{"class":3181},[3089,14426,3586],{"class":3185},[3089,14428,3189],{"class":3099},[3089,14430,13020],{"class":3192},[3089,14432,3526],{"class":3099},[3089,14434,14435,14437,14439,14441],{"class":3091,"line":3254},[3089,14436,13027],{"class":3185},[3089,14438,3189],{"class":3099},[3089,14440,9102],{"class":3192},[3089,14442,3526],{"class":3099},[3089,14444,14445,14447,14449,14451],{"class":3091,"line":3265},[3089,14446,13038],{"class":3185},[3089,14448,3189],{"class":3099},[3089,14450,13043],{"class":3192},[3089,14452,3292],{"class":3177},[3089,14454,14455,14457,14459,14461,14463,14466],{"class":3091,"line":3276},[3089,14456,9005],{"class":3177},[3089,14458,3583],{"class":3181},[3089,14460,3586],{"class":3185},[3089,14462,3189],{"class":3099},[3089,14464,14465],{"class":3192},"\"{Binding Date, StringFormat='dd.MM.yyyy HH:mm'}\"",[3089,14467,3526],{"class":3099},[3089,14469,14470,14472,14474],{"class":3091,"line":3283},[3089,14471,13065],{"class":3185},[3089,14473,3189],{"class":3099},[3089,14475,13070],{"class":3192},[3089,14477,14478,14480,14482],{"class":3091,"line":3295},[3089,14479,13038],{"class":3185},[3089,14481,3189],{"class":3099},[3089,14483,14484],{"class":3192},"\"12\"\n",[3089,14486,14487,14489,14491,14494],{"class":3091,"line":3301},[3089,14488,13084],{"class":3185},[3089,14490,3189],{"class":3099},[3089,14492,14493],{"class":3192},"\"0,5,0,5\"",[3089,14495,3292],{"class":3177},[3089,14497,14498,14500,14502,14504,14506,14508],{"class":3091,"line":3311},[3089,14499,9005],{"class":3177},[3089,14501,3583],{"class":3181},[3089,14503,3586],{"class":3185},[3089,14505,3189],{"class":3099},[3089,14507,13058],{"class":3192},[3089,14509,3526],{"class":3099},[3089,14511,14512,14514,14516,14519],{"class":3091,"line":3321},[3089,14513,13075],{"class":3185},[3089,14515,3189],{"class":3099},[3089,14517,14518],{"class":3192},"\"Wrap\"",[3089,14520,3292],{"class":3177},[3089,14522,14523,14525,14527],{"class":3091,"line":3331},[3089,14524,9047],{"class":3177},[3089,14526,3574],{"class":3181},[3089,14528,3240],{"class":3177},[3089,14530,14531,14533,14535],{"class":3091,"line":3341},[3089,14532,3314],{"class":3177},[3089,14534,3882],{"class":3181},[3089,14536,3240],{"class":3177},[3089,14538,14539,14541,14543],{"class":3091,"line":3660},[3089,14540,3324],{"class":3177},[3089,14542,12748],{"class":3181},[3089,14544,3240],{"class":3177},[3089,14546,14547,14549,14551],{"class":3091,"line":3673},[3089,14548,3334],{"class":3177},[3089,14550,14380],{"class":3181},[3089,14552,3240],{"class":3177},[3089,14554,14555,14557,14559],{"class":3091,"line":3678},[3089,14556,3344],{"class":3177},[3089,14558,14364],{"class":3181},[3089,14560,3240],{"class":3177},[2964,14562,14563,14566],{},[2983,14564,14565],{},"StepBar"," — покрокова навігація:",[3079,14568,14570],{"className":3168,"code":14569,"language":3170,"meta":3084,"style":3084},"\u003Chc:StepBar StepIndex=\"{Binding CurrentStep}\">\n    \u003Chc:StepBarItem Content=\"Крок 1: Реєстрація\"/>\n    \u003Chc:StepBarItem Content=\"Крок 2: Підтвердження\"/>\n    \u003Chc:StepBarItem Content=\"Крок 3: Налаштування\"/>\n    \u003Chc:StepBarItem Content=\"Крок 4: Завершення\"/>\n\u003C/hc:StepBar>\n",[3086,14571,14572,14589,14605,14620,14635,14650],{"__ignoreMap":3084},[3089,14573,14574,14576,14579,14582,14584,14587],{"class":3091,"line":3092},[3089,14575,3178],{"class":3177},[3089,14577,14578],{"class":3181},"hc:StepBar",[3089,14580,14581],{"class":3185}," StepIndex",[3089,14583,3189],{"class":3099},[3089,14585,14586],{"class":3192},"\"{Binding CurrentStep}\"",[3089,14588,3240],{"class":3177},[3089,14590,14591,14593,14596,14598,14600,14603],{"class":3091,"line":3196},[3089,14592,3246],{"class":3177},[3089,14594,14595],{"class":3181},"hc:StepBarItem",[3089,14597,3729],{"class":3185},[3089,14599,3189],{"class":3099},[3089,14601,14602],{"class":3192},"\"Крок 1: Реєстрація\"",[3089,14604,3292],{"class":3177},[3089,14606,14607,14609,14611,14613,14615,14618],{"class":3091,"line":3207},[3089,14608,3246],{"class":3177},[3089,14610,14595],{"class":3181},[3089,14612,3729],{"class":3185},[3089,14614,3189],{"class":3099},[3089,14616,14617],{"class":3192},"\"Крок 2: Підтвердження\"",[3089,14619,3292],{"class":3177},[3089,14621,14622,14624,14626,14628,14630,14633],{"class":3091,"line":3218},[3089,14623,3246],{"class":3177},[3089,14625,14595],{"class":3181},[3089,14627,3729],{"class":3185},[3089,14629,3189],{"class":3099},[3089,14631,14632],{"class":3192},"\"Крок 3: Налаштування\"",[3089,14634,3292],{"class":3177},[3089,14636,14637,14639,14641,14643,14645,14648],{"class":3091,"line":3229},[3089,14638,3246],{"class":3177},[3089,14640,14595],{"class":3181},[3089,14642,3729],{"class":3185},[3089,14644,3189],{"class":3099},[3089,14646,14647],{"class":3192},"\"Крок 4: Завершення\"",[3089,14649,3292],{"class":3177},[3089,14651,14652,14654,14656],{"class":3091,"line":3243},[3089,14653,3344],{"class":3177},[3089,14655,14578],{"class":3181},[3089,14657,3240],{"class":3177},[2964,14659,14660],{},"StepBar автоматично відображає:",[3008,14662,14663,14666,14669],{},[3011,14664,14665],{},"Завершені кроки (зелена галочка)",[3011,14667,14668],{},"Поточний крок (синій кружок)",[3011,14670,14671],{},"Майбутні кроки (сірий кружок)",[2964,14673,14674,14677],{},[2983,14675,14676],{},"Transfer"," — перенесення елементів між двома списками:",[3079,14679,14681],{"className":3168,"code":14680,"language":3170,"meta":3084,"style":3084},"\u003Chc:Transfer ItemsSource=\"{Binding AllItems}\"\n             TargetItemsSource=\"{Binding SelectedItems}\"\n             DisplayMemberPath=\"Name\"/>\n",[3086,14682,14683,14697,14707],{"__ignoreMap":3084},[3089,14684,14685,14687,14690,14692,14694],{"class":3091,"line":3092},[3089,14686,3178],{"class":3177},[3089,14688,14689],{"class":3181},"hc:Transfer",[3089,14691,12542],{"class":3185},[3089,14693,3189],{"class":3099},[3089,14695,14696],{"class":3192},"\"{Binding AllItems}\"\n",[3089,14698,14699,14702,14704],{"class":3091,"line":3196},[3089,14700,14701],{"class":3185},"             TargetItemsSource",[3089,14703,3189],{"class":3099},[3089,14705,14706],{"class":3192},"\"{Binding SelectedItems}\"\n",[3089,14708,14709,14712,14714,14716],{"class":3091,"line":3207},[3089,14710,14711],{"class":3185},"             DisplayMemberPath",[3089,14713,3189],{"class":3099},[3089,14715,7830],{"class":3192},[3089,14717,3292],{"class":3177},[2964,14719,14720],{},"Transfer корисний для вибору елементів зі списку (наприклад, вибір користувачів для групи, вибір прав доступу, тощо).",[3000,14722,14724],{"id":14723},"chart-контроли-базові","Chart контроли (базові)",[2964,14726,14727],{},"HandyControl надає базові можливості для відображення графіків, хоча для складних сценаріїв краще використовувати спеціалізовані бібліотеки як LiveCharts або OxyPlot.",[2964,14729,14730,14733],{},[2983,14731,14732],{},"Gauge"," — датчик/спідометр:",[3079,14735,14737],{"className":3168,"code":14736,"language":3170,"meta":3084,"style":3084},"\u003Chc:CircleProgressBar Value=\"{Binding CpuUsage}\"\n                      Maximum=\"100\"\n                      Width=\"150\"\n                      Height=\"150\"\n                      ShowText=\"True\"\n                      ArcThickness=\"15\"\n                      Style=\"{StaticResource CircleProgressBarGauge}\"/>\n",[3086,14738,14739,14752,14760,14768,14776,14784,14793],{"__ignoreMap":3084},[3089,14740,14741,14743,14745,14747,14749],{"class":3091,"line":3092},[3089,14742,3178],{"class":3177},[3089,14744,8804],{"class":3181},[3089,14746,6094],{"class":3185},[3089,14748,3189],{"class":3099},[3089,14750,14751],{"class":3192},"\"{Binding CpuUsage}\"\n",[3089,14753,14754,14756,14758],{"class":3091,"line":3196},[3089,14755,8816],{"class":3185},[3089,14757,3189],{"class":3099},[3089,14759,7637],{"class":3192},[3089,14761,14762,14764,14766],{"class":3091,"line":3207},[3089,14763,8825],{"class":3185},[3089,14765,3189],{"class":3099},[3089,14767,13331],{"class":3192},[3089,14769,14770,14772,14774],{"class":3091,"line":3218},[3089,14771,8834],{"class":3185},[3089,14773,3189],{"class":3099},[3089,14775,13331],{"class":3192},[3089,14777,14778,14780,14782],{"class":3091,"line":3229},[3089,14779,8843],{"class":3185},[3089,14781,3189],{"class":3099},[3089,14783,7411],{"class":3192},[3089,14785,14786,14788,14790],{"class":3091,"line":3243},[3089,14787,8852],{"class":3185},[3089,14789,3189],{"class":3099},[3089,14791,14792],{"class":3192},"\"15\"\n",[3089,14794,14795,14798,14800,14803],{"class":3091,"line":3254},[3089,14796,14797],{"class":3185},"                      Style",[3089,14799,3189],{"class":3099},[3089,14801,14802],{"class":3192},"\"{StaticResource CircleProgressBarGauge}\"",[3089,14804,3292],{"class":3177},[2964,14806,14807],{},"Gauge можна використовувати для відображення:",[3008,14809,14810,14813,14816,14819],{},[3011,14811,14812],{},"Використання CPU/RAM",[3011,14814,14815],{},"Прогрес виконання",[3011,14817,14818],{},"Рівень заповнення",[3011,14820,14821],{},"Швидкість/температура",[2959,14823,14825],{"id":14824},"media-та-image-контроли","Media та Image контроли",[3000,14827,14829],{"id":14828},"image-контроли","Image контроли",[2964,14831,14832,14835],{},[2983,14833,14834],{},"Gravatar"," — аватар з Gravatar сервісу:",[3079,14837,14839],{"className":3168,"code":14838,"language":3170,"meta":3084,"style":3084},"\u003Chc:Gravatar Id=\"{Binding UserEmail}\" \n             Width=\"80\" \n             Height=\"80\"\n             CornerRadius=\"40\"/>\n",[3086,14840,14841,14858,14869,14879],{"__ignoreMap":3084},[3089,14842,14843,14845,14848,14851,14853,14856],{"class":3091,"line":3092},[3089,14844,3178],{"class":3177},[3089,14846,14847],{"class":3181},"hc:Gravatar",[3089,14849,14850],{"class":3185}," Id",[3089,14852,3189],{"class":3099},[3089,14854,14855],{"class":3192},"\"{Binding UserEmail}\"",[3089,14857,3526],{"class":3099},[3089,14859,14860,14863,14865,14867],{"class":3091,"line":3196},[3089,14861,14862],{"class":3185},"             Width",[3089,14864,3189],{"class":3099},[3089,14866,12625],{"class":3192},[3089,14868,3526],{"class":3099},[3089,14870,14871,14874,14876],{"class":3091,"line":3207},[3089,14872,14873],{"class":3185},"             Height",[3089,14875,3189],{"class":3099},[3089,14877,14878],{"class":3192},"\"80\"\n",[3089,14880,14881,14884,14886,14889],{"class":3091,"line":3218},[3089,14882,14883],{"class":3185},"             CornerRadius",[3089,14885,3189],{"class":3099},[3089,14887,14888],{"class":3192},"\"40\"",[3089,14890,3292],{"class":3177},[2964,14892,14893],{},"Gravatar автоматично завантажує аватар користувача з gravatar.com на основі email.",[2964,14895,14896,14899],{},[2983,14897,14898],{},"ImageBlock"," — зображення з placeholder:",[3079,14901,14903],{"className":3168,"code":14902,"language":3170,"meta":3084,"style":3084},"\u003Chc:ImageBlock Source=\"{Binding ImageUrl}\"\n               Width=\"200\"\n               Height=\"200\"\n               Stretch=\"UniformToFill\"\n               CornerRadius=\"4\"/>\n",[3086,14904,14905,14919,14927,14935,14945],{"__ignoreMap":3084},[3089,14906,14907,14909,14912,14914,14916],{"class":3091,"line":3092},[3089,14908,3178],{"class":3177},[3089,14910,14911],{"class":3181},"hc:ImageBlock",[3089,14913,5371],{"class":3185},[3089,14915,3189],{"class":3099},[3089,14917,14918],{"class":3192},"\"{Binding ImageUrl}\"\n",[3089,14920,14921,14923,14925],{"class":3091,"line":3196},[3089,14922,10905],{"class":3185},[3089,14924,3189],{"class":3099},[3089,14926,9167],{"class":3192},[3089,14928,14929,14931,14933],{"class":3091,"line":3207},[3089,14930,10895],{"class":3185},[3089,14932,3189],{"class":3099},[3089,14934,9167],{"class":3192},[3089,14936,14937,14940,14942],{"class":3091,"line":3218},[3089,14938,14939],{"class":3185},"               Stretch",[3089,14941,3189],{"class":3099},[3089,14943,14944],{"class":3192},"\"UniformToFill\"\n",[3089,14946,14947,14950,14952,14955],{"class":3091,"line":3229},[3089,14948,14949],{"class":3185},"               CornerRadius",[3089,14951,3189],{"class":3099},[3089,14953,14954],{"class":3192},"\"4\"",[3089,14956,3292],{"class":3177},[2964,14958,14959],{},"Якщо зображення не завантажилося, ImageBlock показує placeholder.",[2964,14961,14962,14965],{},[2983,14963,14964],{},"ImageSelector"," — вибір зображення з попереднім переглядом:",[3079,14967,14969],{"className":3168,"code":14968,"language":3170,"meta":3084,"style":3084},"\u003Chc:ImageSelector Uri=\"{Binding SelectedImagePath, Mode=TwoWay}\"\n                  Width=\"200\"\n                  Height=\"200\"\n                  HasClearButton=\"True\"/>\n",[3086,14970,14971,14985,14994,15003],{"__ignoreMap":3084},[3089,14972,14973,14975,14978,14980,14982],{"class":3091,"line":3092},[3089,14974,3178],{"class":3177},[3089,14976,14977],{"class":3181},"hc:ImageSelector",[3089,14979,11100],{"class":3185},[3089,14981,3189],{"class":3099},[3089,14983,14984],{"class":3192},"\"{Binding SelectedImagePath, Mode=TwoWay}\"\n",[3089,14986,14987,14990,14992],{"class":3091,"line":3196},[3089,14988,14989],{"class":3185},"                  Width",[3089,14991,3189],{"class":3099},[3089,14993,9167],{"class":3192},[3089,14995,14996,14999,15001],{"class":3091,"line":3207},[3089,14997,14998],{"class":3185},"                  Height",[3089,15000,3189],{"class":3099},[3089,15002,9167],{"class":3192},[3089,15004,15005,15008,15010,15012],{"class":3091,"line":3218},[3089,15006,15007],{"class":3185},"                  HasClearButton",[3089,15009,3189],{"class":3099},[3089,15011,7190],{"class":3192},[3089,15013,3292],{"class":3177},[2964,15015,15016],{},"ImageSelector дозволяє:",[3008,15018,15019,15022,15025],{},[3011,15020,15021],{},"Вибрати зображення з файлової системи",[3011,15023,15024],{},"Показати попередній перегляд",[3011,15026,15027],{},"Очистити вибране зображення",[3000,15029,15031],{"id":15030},"icon-контроли","Icon контроли",[2964,15033,15034],{},"HandyControl використовує векторні іконки на базі Geometry, що дозволяє масштабувати їх без втрати якості.",[2964,15036,15037,15040],{},[2983,15038,15039],{},"GeometryIcon"," — векторна іконка:",[3079,15042,15044],{"className":3168,"code":15043,"language":3170,"meta":3084,"style":3084},"\u003Chc:GeometryIcon Data=\"{StaticResource SaveGeometry}\" \n                 Width=\"24\" \n                 Height=\"24\"\n                 Foreground=\"{DynamicResource PrimaryBrush}\"/>\n",[3086,15045,15046,15061,15072,15081],{"__ignoreMap":3084},[3089,15047,15048,15050,15053,15055,15057,15059],{"class":3091,"line":3092},[3089,15049,3178],{"class":3177},[3089,15051,15052],{"class":3181},"hc:GeometryIcon",[3089,15054,6722],{"class":3185},[3089,15056,3189],{"class":3099},[3089,15058,6727],{"class":3192},[3089,15060,3526],{"class":3099},[3089,15062,15063,15066,15068,15070],{"class":3091,"line":3196},[3089,15064,15065],{"class":3185},"                 Width",[3089,15067,3189],{"class":3099},[3089,15069,3603],{"class":3192},[3089,15071,3526],{"class":3099},[3089,15073,15074,15077,15079],{"class":3091,"line":3207},[3089,15075,15076],{"class":3185},"                 Height",[3089,15078,3189],{"class":3099},[3089,15080,11017],{"class":3192},[3089,15082,15083,15086,15088,15091],{"class":3091,"line":3218},[3089,15084,15085],{"class":3185},"                 Foreground",[3089,15087,3189],{"class":3099},[3089,15089,15090],{"class":3192},"\"{DynamicResource PrimaryBrush}\"",[3089,15092,3292],{"class":3177},[2964,15094,15095],{},"HandyControl включає велику колекцію готових іконок (понад 500), доступних через StaticResource.",[2964,15097,15098,15101],{},[2983,15099,15100],{},"PathIcon"," — іконка з Path:",[3079,15103,15105],{"className":3168,"code":15104,"language":3170,"meta":3084,"style":3084},"\u003Chc:PathIcon Data=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"\n             Width=\"24\"\n             Height=\"24\"/>\n",[3086,15106,15107,15121,15129],{"__ignoreMap":3084},[3089,15108,15109,15111,15114,15116,15118],{"class":3091,"line":3092},[3089,15110,3178],{"class":3177},[3089,15112,15113],{"class":3181},"hc:PathIcon",[3089,15115,6722],{"class":3185},[3089,15117,3189],{"class":3099},[3089,15119,15120],{"class":3192},"\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"\n",[3089,15122,15123,15125,15127],{"class":3091,"line":3196},[3089,15124,14862],{"class":3185},[3089,15126,3189],{"class":3099},[3089,15128,11017],{"class":3192},[3089,15130,15131,15133,15135,15137],{"class":3091,"line":3207},[3089,15132,14873],{"class":3185},[3089,15134,3189],{"class":3099},[3089,15136,3603],{"class":3192},[3089,15138,3292],{"class":3177},[3000,15140,15142],{"id":15141},"media-контроли","Media контроли",[2964,15144,15145,15148],{},[2983,15146,15147],{},"GifImage"," — відображення анімованих GIF:",[3079,15150,15152],{"className":3168,"code":15151,"language":3170,"meta":3084,"style":3084},"\u003Chc:GifImage Uri=\"/Assets/loading.gif\" \n             Width=\"100\" \n             Height=\"100\"\n             AutoPlay=\"True\"/>\n",[3086,15153,15154,15170,15180,15188],{"__ignoreMap":3084},[3089,15155,15156,15158,15161,15163,15165,15168],{"class":3091,"line":3092},[3089,15157,3178],{"class":3177},[3089,15159,15160],{"class":3181},"hc:GifImage",[3089,15162,11100],{"class":3185},[3089,15164,3189],{"class":3099},[3089,15166,15167],{"class":3192},"\"/Assets/loading.gif\"",[3089,15169,3526],{"class":3099},[3089,15171,15172,15174,15176,15178],{"class":3091,"line":3196},[3089,15173,14862],{"class":3185},[3089,15175,3189],{"class":3099},[3089,15177,8922],{"class":3192},[3089,15179,3526],{"class":3099},[3089,15181,15182,15184,15186],{"class":3091,"line":3207},[3089,15183,14873],{"class":3185},[3089,15185,3189],{"class":3099},[3089,15187,7637],{"class":3192},[3089,15189,15190,15193,15195,15197],{"class":3091,"line":3218},[3089,15191,15192],{"class":3185},"             AutoPlay",[3089,15194,3189],{"class":3099},[3089,15196,7190],{"class":3192},[3089,15198,3292],{"class":3177},[2964,15200,15201],{},"Стандартний WPF Image не підтримує анімацію GIF, тому GifImage — корисний контрол для відображення анімованих зображень.",[2959,15203,15205],{"id":15204},"notification-та-feedback-контроли","Notification та Feedback контроли",[3000,15207,15209],{"id":15208},"notification-системи","Notification системи",[2964,15211,15212,15215],{},[2983,15213,15214],{},"Growl"," — toast notifications:",[3079,15217,15219],{"className":4236,"code":15218,"language":4238,"meta":3084,"style":3084},"// Успішне повідомлення\nGrowl.Success(\"Дані збережено успішно!\");\n\n// Інформаційне повідомлення\nGrowl.Info(\"Нова версія доступна для завантаження\");\n\n// Попередження\nGrowl.Warning(\"Диск майже заповнений\");\n\n// Помилка\nGrowl.Error(\"Не вдалося підключитися до сервера\");\n\n// Запитання\nGrowl.Ask(\"Зберегти зміни перед виходом?\", isConfirmed =>\n{\n    if (isConfirmed)\n    {\n        SaveChanges();\n    }\n});\n",[3086,15220,15221,15226,15242,15246,15251,15266,15270,15275,15291,15295,15300,15316,15320,15325,15347,15351,15361,15365,15372,15376],{"__ignoreMap":3084},[3089,15222,15223],{"class":3091,"line":3092},[3089,15224,15225],{"class":3279},"// Успішне повідомлення\n",[3089,15227,15228,15230,15232,15235,15237,15240],{"class":3091,"line":3196},[3089,15229,15214],{"class":4312},[3089,15231,3454],{"class":3099},[3089,15233,15234],{"class":3095},"Success",[3089,15236,4306],{"class":3099},[3089,15238,15239],{"class":3118},"\"Дані збережено успішно!\"",[3089,15241,4339],{"class":3099},[3089,15243,15244],{"class":3091,"line":3207},[3089,15245,4263],{"emptyLinePlaceholder":4262},[3089,15247,15248],{"class":3091,"line":3218},[3089,15249,15250],{"class":3279},"// Інформаційне повідомлення\n",[3089,15252,15253,15255,15257,15259,15261,15264],{"class":3091,"line":3229},[3089,15254,15214],{"class":4312},[3089,15256,3454],{"class":3099},[3089,15258,7765],{"class":3095},[3089,15260,4306],{"class":3099},[3089,15262,15263],{"class":3118},"\"Нова версія доступна для завантаження\"",[3089,15265,4339],{"class":3099},[3089,15267,15268],{"class":3091,"line":3243},[3089,15269,4263],{"emptyLinePlaceholder":4262},[3089,15271,15272],{"class":3091,"line":3254},[3089,15273,15274],{"class":3279},"// Попередження\n",[3089,15276,15277,15279,15281,15284,15286,15289],{"class":3091,"line":3265},[3089,15278,15214],{"class":4312},[3089,15280,3454],{"class":3099},[3089,15282,15283],{"class":3095},"Warning",[3089,15285,4306],{"class":3099},[3089,15287,15288],{"class":3118},"\"Диск майже заповнений\"",[3089,15290,4339],{"class":3099},[3089,15292,15293],{"class":3091,"line":3276},[3089,15294,4263],{"emptyLinePlaceholder":4262},[3089,15296,15297],{"class":3091,"line":3283},[3089,15298,15299],{"class":3279},"// Помилка\n",[3089,15301,15302,15304,15306,15309,15311,15314],{"class":3091,"line":3295},[3089,15303,15214],{"class":4312},[3089,15305,3454],{"class":3099},[3089,15307,15308],{"class":3095},"Error",[3089,15310,4306],{"class":3099},[3089,15312,15313],{"class":3118},"\"Не вдалося підключитися до сервера\"",[3089,15315,4339],{"class":3099},[3089,15317,15318],{"class":3091,"line":3301},[3089,15319,4263],{"emptyLinePlaceholder":4262},[3089,15321,15322],{"class":3091,"line":3311},[3089,15323,15324],{"class":3279},"// Запитання\n",[3089,15326,15327,15329,15331,15334,15336,15339,15341,15344],{"class":3091,"line":3321},[3089,15328,15214],{"class":4312},[3089,15330,3454],{"class":3099},[3089,15332,15333],{"class":3095},"Ask",[3089,15335,4306],{"class":3099},[3089,15337,15338],{"class":3118},"\"Зберегти зміни перед виходом?\"",[3089,15340,4789],{"class":3099},[3089,15342,15343],{"class":4312},"isConfirmed",[3089,15345,15346],{"class":3099}," =>\n",[3089,15348,15349],{"class":3091,"line":3331},[3089,15350,4289],{"class":3099},[3089,15352,15353,15355,15357,15359],{"class":3091,"line":3341},[3089,15354,4826],{"class":4245},[3089,15356,4829],{"class":3099},[3089,15358,15343],{"class":4312},[3089,15360,4316],{"class":3099},[3089,15362,15363],{"class":3091,"line":3660},[3089,15364,4321],{"class":3099},[3089,15366,15367,15370],{"class":3091,"line":3673},[3089,15368,15369],{"class":3095},"        SaveChanges",[3089,15371,5728],{"class":3099},[3089,15373,15374],{"class":3091,"line":3678},[3089,15375,4389],{"class":3099},[3089,15377,15378],{"class":3091,"line":3693},[3089,15379,11956],{"class":3099},[2964,15381,15382],{},"Growl показує повідомлення у правому верхньому куті екрану з автоматичним зникненням через кілька секунд.",[2964,15384,15385],{},"Для показу Growl у конкретному контейнері:",[3079,15387,15389],{"className":3168,"code":15388,"language":3170,"meta":3084,"style":3084},"\u003CGrid hc:Growl.GrowlParent=\"True\">\n    \u003C!-- Контент -->\n\u003C/Grid>\n",[3086,15390,15391,15406,15410],{"__ignoreMap":3084},[3089,15392,15393,15395,15397,15400,15402,15404],{"class":3091,"line":3092},[3089,15394,3178],{"class":3177},[3089,15396,3557],{"class":3181},[3089,15398,15399],{"class":3185}," hc:Growl.GrowlParent",[3089,15401,3189],{"class":3099},[3089,15403,7190],{"class":3192},[3089,15405,3240],{"class":3177},[3089,15407,15408],{"class":3091,"line":3196},[3089,15409,10615],{"class":3279},[3089,15411,15412,15414,15416],{"class":3091,"line":3207},[3089,15413,3344],{"class":3177},[3089,15415,3557],{"class":3181},[3089,15417,3240],{"class":3177},[3079,15419,15421],{"className":4236,"code":15420,"language":4238,"meta":3084,"style":3084},"Growl.SuccessGlobal(\"Повідомлення для всього додатку\");\n// або\nGrowl.Success(\"Повідомлення для конкретного контейнера\", \"ContainerToken\");\n",[3086,15422,15423,15439,15444],{"__ignoreMap":3084},[3089,15424,15425,15427,15429,15432,15434,15437],{"class":3091,"line":3092},[3089,15426,15214],{"class":4312},[3089,15428,3454],{"class":3099},[3089,15430,15431],{"class":3095},"SuccessGlobal",[3089,15433,4306],{"class":3099},[3089,15435,15436],{"class":3118},"\"Повідомлення для всього додатку\"",[3089,15438,4339],{"class":3099},[3089,15440,15441],{"class":3091,"line":3196},[3089,15442,15443],{"class":3279},"// або\n",[3089,15445,15446,15448,15450,15452,15454,15457,15459,15462],{"class":3091,"line":3207},[3089,15447,15214],{"class":4312},[3089,15449,3454],{"class":3099},[3089,15451,15234],{"class":3095},[3089,15453,4306],{"class":3099},[3089,15455,15456],{"class":3118},"\"Повідомлення для конкретного контейнера\"",[3089,15458,4789],{"class":3099},[3089,15460,15461],{"class":3118},"\"ContainerToken\"",[3089,15463,4339],{"class":3099},[2964,15465,15466,15469],{},[2983,15467,15468],{},"NotificationArea"," — область для сповіщень:",[3079,15471,15473],{"className":3168,"code":15472,"language":3170,"meta":3084,"style":3084},"\u003Chc:NotificationArea Name=\"NotificationArea\" \n                     MaxCount=\"5\"\n                     Position=\"TopRight\"/>\n",[3086,15474,15475,15491,15500],{"__ignoreMap":3084},[3089,15476,15477,15479,15482,15484,15486,15489],{"class":3091,"line":3092},[3089,15478,3178],{"class":3177},[3089,15480,15481],{"class":3181},"hc:NotificationArea",[3089,15483,12043],{"class":3185},[3089,15485,3189],{"class":3099},[3089,15487,15488],{"class":3192},"\"NotificationArea\"",[3089,15490,3526],{"class":3099},[3089,15492,15493,15496,15498],{"class":3091,"line":3196},[3089,15494,15495],{"class":3185},"                     MaxCount",[3089,15497,3189],{"class":3099},[3089,15499,9195],{"class":3192},[3089,15501,15502,15505,15507,15510],{"class":3091,"line":3207},[3089,15503,15504],{"class":3185},"                     Position",[3089,15506,3189],{"class":3099},[3089,15508,15509],{"class":3192},"\"TopRight\"",[3089,15511,3292],{"class":3177},[3079,15513,15515],{"className":4236,"code":15514,"language":4238,"meta":3084,"style":3084},"NotificationArea.Show(new NotificationInfo\n{\n    Title = \"Нове повідомлення\",\n    Message = \"У вас є нове повідомлення від користувача\",\n    Type = NotificationType.Info,\n    ShowDateTime = true\n});\n",[3086,15516,15517,15532,15536,15548,15559,15575,15585],{"__ignoreMap":3084},[3089,15518,15519,15521,15523,15525,15527,15529],{"class":3091,"line":3092},[3089,15520,15468],{"class":4312},[3089,15522,3454],{"class":3099},[3089,15524,11836],{"class":3095},[3089,15526,4306],{"class":3099},[3089,15528,7898],{"class":4268},[3089,15530,15531],{"class":4249}," NotificationInfo\n",[3089,15533,15534],{"class":3091,"line":3196},[3089,15535,4289],{"class":3099},[3089,15537,15538,15541,15543,15546],{"class":3091,"line":3207},[3089,15539,15540],{"class":4312},"    Title",[3089,15542,4488],{"class":3099},[3089,15544,15545],{"class":3118},"\"Нове повідомлення\"",[3089,15547,11891],{"class":3099},[3089,15549,15550,15552,15554,15557],{"class":3091,"line":3218},[3089,15551,11883],{"class":4312},[3089,15553,4488],{"class":3099},[3089,15555,15556],{"class":3118},"\"У вас є нове повідомлення від користувача\"",[3089,15558,11891],{"class":3099},[3089,15560,15561,15564,15566,15569,15571,15573],{"class":3091,"line":3229},[3089,15562,15563],{"class":4312},"    Type",[3089,15565,4488],{"class":3099},[3089,15567,15568],{"class":4312},"NotificationType",[3089,15570,3454],{"class":3099},[3089,15572,7765],{"class":4312},[3089,15574,11891],{"class":3099},[3089,15576,15577,15580,15582],{"class":3091,"line":3243},[3089,15578,15579],{"class":4312},"    ShowDateTime",[3089,15581,4488],{"class":3099},[3089,15583,15584],{"class":4268},"true\n",[3089,15586,15587],{"class":3091,"line":3254},[3089,15588,11956],{"class":3099},[3000,15590,15592],{"id":15591},"loading-та-progress","Loading та Progress",[2964,15594,15595,15598],{},[2983,15596,15597],{},"LoadingCircle"," — круговий індикатор завантаження:",[3079,15600,15602],{"className":3168,"code":15601,"language":3170,"meta":3084,"style":3084},"\u003Chc:LoadingCircle Width=\"50\" \n                  Height=\"50\"\n                  IsRunning=\"{Binding IsLoading}\"/>\n",[3086,15603,15604,15618,15626],{"__ignoreMap":3084},[3089,15605,15606,15608,15610,15612,15614,15616],{"class":3091,"line":3092},[3089,15607,3178],{"class":3177},[3089,15609,11034],{"class":3181},[3089,15611,8880],{"class":3185},[3089,15613,3189],{"class":3099},[3089,15615,9803],{"class":3192},[3089,15617,3526],{"class":3099},[3089,15619,15620,15622,15624],{"class":3091,"line":3196},[3089,15621,14998],{"class":3185},[3089,15623,3189],{"class":3099},[3089,15625,9815],{"class":3192},[3089,15627,15628,15631,15633,15636],{"class":3091,"line":3207},[3089,15629,15630],{"class":3185},"                  IsRunning",[3089,15632,3189],{"class":3099},[3089,15634,15635],{"class":3192},"\"{Binding IsLoading}\"",[3089,15637,3292],{"class":3177},[2964,15639,15640,15643],{},[2983,15641,15642],{},"LoadingLine"," — лінійний індикатор завантаження:",[3079,15645,15647],{"className":3168,"code":15646,"language":3170,"meta":3084,"style":3084},"\u003Chc:LoadingLine IsRunning=\"{Binding IsLoading}\"\n                Height=\"4\"\n                Foreground=\"{DynamicResource PrimaryBrush}\"/>\n",[3086,15648,15649,15663,15671],{"__ignoreMap":3084},[3089,15650,15651,15653,15656,15659,15661],{"class":3091,"line":3092},[3089,15652,3178],{"class":3177},[3089,15654,15655],{"class":3181},"hc:LoadingLine",[3089,15657,15658],{"class":3185}," IsRunning",[3089,15660,3189],{"class":3099},[3089,15662,6847],{"class":3192},[3089,15664,15665,15667,15669],{"class":3091,"line":3196},[3089,15666,8750],{"class":3185},[3089,15668,3189],{"class":3099},[3089,15670,10086],{"class":3192},[3089,15672,15673,15675,15677,15679],{"class":3091,"line":3207},[3089,15674,4143],{"class":3185},[3089,15676,3189],{"class":3099},[3089,15678,15090],{"class":3192},[3089,15680,3292],{"class":3177},[2964,15682,15683],{},"LoadingLine зазвичай розміщується у верхній частині вікна або контейнера для індикації фонового завантаження.",[2964,15685,15686,15689],{},[2983,15687,15688],{},"Rate"," — рейтинг зірками:",[3079,15691,15693],{"className":3168,"code":15692,"language":3170,"meta":3084,"style":3084},"\u003Chc:Rate Value=\"{Binding Rating, Mode=TwoWay}\"\n         Count=\"5\"\n         AllowHalf=\"True\"\n         IsReadOnly=\"False\"/>\n",[3086,15694,15695,15709,15718,15727],{"__ignoreMap":3084},[3089,15696,15697,15699,15702,15704,15706],{"class":3091,"line":3092},[3089,15698,3178],{"class":3177},[3089,15700,15701],{"class":3181},"hc:Rate",[3089,15703,6094],{"class":3185},[3089,15705,3189],{"class":3099},[3089,15707,15708],{"class":3192},"\"{Binding Rating, Mode=TwoWay}\"\n",[3089,15710,15711,15714,15716],{"class":3091,"line":3196},[3089,15712,15713],{"class":3185},"         Count",[3089,15715,3189],{"class":3099},[3089,15717,9195],{"class":3192},[3089,15719,15720,15723,15725],{"class":3091,"line":3207},[3089,15721,15722],{"class":3185},"         AllowHalf",[3089,15724,3189],{"class":3099},[3089,15726,7411],{"class":3192},[3089,15728,15729,15732,15734,15736],{"class":3091,"line":3218},[3089,15730,15731],{"class":3185},"         IsReadOnly",[3089,15733,3189],{"class":3099},[3089,15735,9040],{"class":3192},[3089,15737,3292],{"class":3177},[3789,15739,15740],{},[3079,15741,15743],{"className":3168,"code":15742,"language":3170,"meta":3084,"style":3084},"\u003CStackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n    \u003CPath Data=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" \n          Fill=\"#FFD700\" Width=\"24\" Height=\"24\" Margin=\"2\"/>\n    \u003CPath Data=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" \n          Fill=\"#FFD700\" Width=\"24\" Height=\"24\" Margin=\"2\"/>\n    \u003CPath Data=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" \n          Fill=\"#FFD700\" Width=\"24\" Height=\"24\" Margin=\"2\"/>\n    \u003CPath Data=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" \n          Fill=\"#CCCCCC\" Width=\"24\" Height=\"24\" Margin=\"2\"/>\n    \u003CPath Data=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" \n          Fill=\"#CCCCCC\" Width=\"24\" Height=\"24\" Margin=\"2\"/>\n\u003C/StackPanel>\n",[3086,15744,15745,15771,15786,15816,15830,15858,15872,15900,15914,15942,15956,15984],{"__ignoreMap":3084},[3089,15746,15747,15749,15751,15753,15755,15757,15759,15761,15763,15765,15767,15769],{"class":3091,"line":3092},[3089,15748,3178],{"class":3177},[3089,15750,3574],{"class":3181},[3089,15752,6384],{"class":3185},[3089,15754,3189],{"class":3099},[3089,15756,6389],{"class":3192},[3089,15758,6392],{"class":3185},[3089,15760,3189],{"class":3099},[3089,15762,6397],{"class":3192},[3089,15764,6400],{"class":3185},[3089,15766,3189],{"class":3099},[3089,15768,6397],{"class":3192},[3089,15770,3240],{"class":3177},[3089,15772,15773,15775,15777,15779,15781,15784],{"class":3091,"line":3196},[3089,15774,3246],{"class":3177},[3089,15776,6719],{"class":3181},[3089,15778,6722],{"class":3185},[3089,15780,3189],{"class":3099},[3089,15782,15783],{"class":3192},"\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"",[3089,15785,3526],{"class":3099},[3089,15787,15788,15790,15792,15795,15797,15799,15801,15803,15805,15807,15809,15811,15814],{"class":3091,"line":3207},[3089,15789,6734],{"class":3185},[3089,15791,3189],{"class":3099},[3089,15793,15794],{"class":3192},"\"#FFD700\"",[3089,15796,8880],{"class":3185},[3089,15798,3189],{"class":3099},[3089,15800,3603],{"class":3192},[3089,15802,6752],{"class":3185},[3089,15804,3189],{"class":3099},[3089,15806,3603],{"class":3192},[3089,15808,3560],{"class":3185},[3089,15810,3189],{"class":3099},[3089,15812,15813],{"class":3192},"\"2\"",[3089,15815,3292],{"class":3177},[3089,15817,15818,15820,15822,15824,15826,15828],{"class":3091,"line":3218},[3089,15819,3246],{"class":3177},[3089,15821,6719],{"class":3181},[3089,15823,6722],{"class":3185},[3089,15825,3189],{"class":3099},[3089,15827,15783],{"class":3192},[3089,15829,3526],{"class":3099},[3089,15831,15832,15834,15836,15838,15840,15842,15844,15846,15848,15850,15852,15854,15856],{"class":3091,"line":3229},[3089,15833,6734],{"class":3185},[3089,15835,3189],{"class":3099},[3089,15837,15794],{"class":3192},[3089,15839,8880],{"class":3185},[3089,15841,3189],{"class":3099},[3089,15843,3603],{"class":3192},[3089,15845,6752],{"class":3185},[3089,15847,3189],{"class":3099},[3089,15849,3603],{"class":3192},[3089,15851,3560],{"class":3185},[3089,15853,3189],{"class":3099},[3089,15855,15813],{"class":3192},[3089,15857,3292],{"class":3177},[3089,15859,15860,15862,15864,15866,15868,15870],{"class":3091,"line":3243},[3089,15861,3246],{"class":3177},[3089,15863,6719],{"class":3181},[3089,15865,6722],{"class":3185},[3089,15867,3189],{"class":3099},[3089,15869,15783],{"class":3192},[3089,15871,3526],{"class":3099},[3089,15873,15874,15876,15878,15880,15882,15884,15886,15888,15890,15892,15894,15896,15898],{"class":3091,"line":3254},[3089,15875,6734],{"class":3185},[3089,15877,3189],{"class":3099},[3089,15879,15794],{"class":3192},[3089,15881,8880],{"class":3185},[3089,15883,3189],{"class":3099},[3089,15885,3603],{"class":3192},[3089,15887,6752],{"class":3185},[3089,15889,3189],{"class":3099},[3089,15891,3603],{"class":3192},[3089,15893,3560],{"class":3185},[3089,15895,3189],{"class":3099},[3089,15897,15813],{"class":3192},[3089,15899,3292],{"class":3177},[3089,15901,15902,15904,15906,15908,15910,15912],{"class":3091,"line":3265},[3089,15903,3246],{"class":3177},[3089,15905,6719],{"class":3181},[3089,15907,6722],{"class":3185},[3089,15909,3189],{"class":3099},[3089,15911,15783],{"class":3192},[3089,15913,3526],{"class":3099},[3089,15915,15916,15918,15920,15922,15924,15926,15928,15930,15932,15934,15936,15938,15940],{"class":3091,"line":3276},[3089,15917,6734],{"class":3185},[3089,15919,3189],{"class":3099},[3089,15921,10831],{"class":3192},[3089,15923,8880],{"class":3185},[3089,15925,3189],{"class":3099},[3089,15927,3603],{"class":3192},[3089,15929,6752],{"class":3185},[3089,15931,3189],{"class":3099},[3089,15933,3603],{"class":3192},[3089,15935,3560],{"class":3185},[3089,15937,3189],{"class":3099},[3089,15939,15813],{"class":3192},[3089,15941,3292],{"class":3177},[3089,15943,15944,15946,15948,15950,15952,15954],{"class":3091,"line":3283},[3089,15945,3246],{"class":3177},[3089,15947,6719],{"class":3181},[3089,15949,6722],{"class":3185},[3089,15951,3189],{"class":3099},[3089,15953,15783],{"class":3192},[3089,15955,3526],{"class":3099},[3089,15957,15958,15960,15962,15964,15966,15968,15970,15972,15974,15976,15978,15980,15982],{"class":3091,"line":3295},[3089,15959,6734],{"class":3185},[3089,15961,3189],{"class":3099},[3089,15963,10831],{"class":3192},[3089,15965,8880],{"class":3185},[3089,15967,3189],{"class":3099},[3089,15969,3603],{"class":3192},[3089,15971,6752],{"class":3185},[3089,15973,3189],{"class":3099},[3089,15975,3603],{"class":3192},[3089,15977,3560],{"class":3185},[3089,15979,3189],{"class":3099},[3089,15981,15813],{"class":3192},[3089,15983,3292],{"class":3177},[3089,15985,15986,15988,15990],{"class":3091,"line":3301},[3089,15987,3344],{"class":3177},[3089,15989,3574],{"class":3181},[3089,15991,3240],{"class":3177},[3000,15993,15995],{"id":15994},"info-контроли","Info контроли",[2964,15997,15998,16000],{},[2983,15999,7443],{}," — placeholder для порожніх станів:",[3079,16002,16004],{"className":3168,"code":16003,"language":3170,"meta":3084,"style":3084},"\u003Chc:Placeholder Visibility=\"{Binding HasData, Converter={StaticResource Boolean2VisibilityReConverter}}\">\n    \u003Chc:Placeholder.Content>\n        \u003CStackPanel HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\">\n            \u003CPath Data=\"{StaticResource EmptyGeometry}\" \n                  Fill=\"{DynamicResource ThirdlyTextBrush}\"\n                  Width=\"100\" Height=\"100\"\n                  Margin=\"0,0,0,20\"/>\n            \u003CTextBlock Text=\"Немає даних для відображення\" \n                       FontSize=\"16\"\n                       Foreground=\"{DynamicResource ThirdlyTextBrush}\"/>\n        \u003C/StackPanel>\n    \u003C/hc:Placeholder.Content>\n\u003C/hc:Placeholder>\n",[3086,16005,16006,16023,16032,16052,16067,16076,16090,16101,16116,16124,16135,16143,16151],{"__ignoreMap":3084},[3089,16007,16008,16010,16013,16016,16018,16021],{"class":3091,"line":3092},[3089,16009,3178],{"class":3177},[3089,16011,16012],{"class":3181},"hc:Placeholder",[3089,16014,16015],{"class":3185}," Visibility",[3089,16017,3189],{"class":3099},[3089,16019,16020],{"class":3192},"\"{Binding HasData, Converter={StaticResource Boolean2VisibilityReConverter}}\"",[3089,16022,3240],{"class":3177},[3089,16024,16025,16027,16030],{"class":3091,"line":3196},[3089,16026,3246],{"class":3177},[3089,16028,16029],{"class":3181},"hc:Placeholder.Content",[3089,16031,3240],{"class":3177},[3089,16033,16034,16036,16038,16040,16042,16044,16046,16048,16050],{"class":3091,"line":3207},[3089,16035,3257],{"class":3177},[3089,16037,3574],{"class":3181},[3089,16039,6392],{"class":3185},[3089,16041,3189],{"class":3099},[3089,16043,6397],{"class":3192},[3089,16045,6400],{"class":3185},[3089,16047,3189],{"class":3099},[3089,16049,6397],{"class":3192},[3089,16051,3240],{"class":3177},[3089,16053,16054,16056,16058,16060,16062,16065],{"class":3091,"line":3218},[3089,16055,3268],{"class":3177},[3089,16057,6719],{"class":3181},[3089,16059,6722],{"class":3185},[3089,16061,3189],{"class":3099},[3089,16063,16064],{"class":3192},"\"{StaticResource EmptyGeometry}\"",[3089,16066,3526],{"class":3099},[3089,16068,16069,16072,16074],{"class":3091,"line":3229},[3089,16070,16071],{"class":3185},"                  Fill",[3089,16073,3189],{"class":3099},[3089,16075,13070],{"class":3192},[3089,16077,16078,16080,16082,16084,16086,16088],{"class":3091,"line":3243},[3089,16079,14989],{"class":3185},[3089,16081,3189],{"class":3099},[3089,16083,8922],{"class":3192},[3089,16085,6752],{"class":3185},[3089,16087,3189],{"class":3099},[3089,16089,7637],{"class":3192},[3089,16091,16092,16095,16097,16099],{"class":3091,"line":3254},[3089,16093,16094],{"class":3185},"                  Margin",[3089,16096,3189],{"class":3099},[3089,16098,3625],{"class":3192},[3089,16100,3292],{"class":3177},[3089,16102,16103,16105,16107,16109,16111,16114],{"class":3091,"line":3265},[3089,16104,3268],{"class":3177},[3089,16106,3583],{"class":3181},[3089,16108,3586],{"class":3185},[3089,16110,3189],{"class":3099},[3089,16112,16113],{"class":3192},"\"Немає даних для відображення\"",[3089,16115,3526],{"class":3099},[3089,16117,16118,16120,16122],{"class":3091,"line":3276},[3089,16119,3598],{"class":3185},[3089,16121,3189],{"class":3099},[3089,16123,13237],{"class":3192},[3089,16125,16126,16128,16130,16133],{"class":3091,"line":3283},[3089,16127,11002],{"class":3185},[3089,16129,3189],{"class":3099},[3089,16131,16132],{"class":3192},"\"{DynamicResource ThirdlyTextBrush}\"",[3089,16134,3292],{"class":3177},[3089,16136,16137,16139,16141],{"class":3091,"line":3295},[3089,16138,3324],{"class":3177},[3089,16140,3574],{"class":3181},[3089,16142,3240],{"class":3177},[3089,16144,16145,16147,16149],{"class":3091,"line":3301},[3089,16146,3334],{"class":3177},[3089,16148,16029],{"class":3181},[3089,16150,3240],{"class":3177},[3089,16152,16153,16155,16157],{"class":3091,"line":3311},[3089,16154,3344],{"class":3177},[3089,16156,16012],{"class":3181},[3089,16158,3240],{"class":3177},[2964,16160,16161],{},"Placeholder показується, коли немає даних для відображення (порожній список, відсутні результати пошуку, тощо).",[2959,16163,16165],{"id":16164},"advanced-контроли","Advanced контроли",[3000,16167,16169],{"id":16168},"editor-контроли","Editor контроли",[2964,16171,16172,16175],{},[2983,16173,16174],{},"RichTextBox"," — покращений rich text editor:",[3079,16177,16179],{"className":3168,"code":16178,"language":3170,"meta":3084,"style":3084},"\u003Chc:RichTextBox Height=\"300\"\n                ShowLineNumber=\"True\"\n                AcceptsReturn=\"True\"\n                AcceptsTab=\"True\"/>\n",[3086,16180,16181,16194,16203,16212],{"__ignoreMap":3084},[3089,16182,16183,16185,16188,16190,16192],{"class":3091,"line":3092},[3089,16184,3178],{"class":3177},[3089,16186,16187],{"class":3181},"hc:RichTextBox",[3089,16189,6752],{"class":3185},[3089,16191,3189],{"class":3099},[3089,16193,12097],{"class":3192},[3089,16195,16196,16199,16201],{"class":3091,"line":3196},[3089,16197,16198],{"class":3185},"                ShowLineNumber",[3089,16200,3189],{"class":3099},[3089,16202,7411],{"class":3192},[3089,16204,16205,16208,16210],{"class":3091,"line":3207},[3089,16206,16207],{"class":3185},"                AcceptsReturn",[3089,16209,3189],{"class":3099},[3089,16211,7411],{"class":3192},[3089,16213,16214,16217,16219,16221],{"class":3091,"line":3218},[3089,16215,16216],{"class":3185},"                AcceptsTab",[3089,16218,3189],{"class":3099},[3089,16220,7190],{"class":3192},[3089,16222,3292],{"class":3177},[2964,16224,16225],{},"HandyControl RichTextBox додає:",[3008,16227,16228,16231,16234],{},[3011,16229,16230],{},"Нумерацію рядків",[3011,16232,16233],{},"Підсвічування синтаксису (базове)",[3011,16235,16236],{},"Кращий вигляд scrollbar",[3000,16238,16240],{"id":16239},"calendar-та-scheduler","Calendar та Scheduler",[2964,16242,16243,16246],{},[2983,16244,16245],{},"CalendarWithClock"," — календар з годинником:",[3079,16248,16250],{"className":3168,"code":16249,"language":3170,"meta":3084,"style":3084},"\u003Chc:CalendarWithClock SelectedDateTime=\"{Binding SelectedDateTime, Mode=TwoWay}\"/>\n",[3086,16251,16252],{"__ignoreMap":3084},[3089,16253,16254,16256,16259,16262,16264,16267],{"class":3091,"line":3092},[3089,16255,3178],{"class":3177},[3089,16257,16258],{"class":3181},"hc:CalendarWithClock",[3089,16260,16261],{"class":3185}," SelectedDateTime",[3089,16263,3189],{"class":3099},[3089,16265,16266],{"class":3192},"\"{Binding SelectedDateTime, Mode=TwoWay}\"",[3089,16268,3292],{"class":3177},[2964,16270,16271],{},"CalendarWithClock комбінує календар та аналоговий годинник для вибору дати та часу.",[2964,16273,16274,16277],{},[2983,16275,16276],{},"Clock"," — аналоговий годинник:",[3079,16279,16281],{"className":3168,"code":16280,"language":3170,"meta":3084,"style":3084},"\u003Chc:Clock Width=\"200\" \n          Height=\"200\"\n          ShowSecondHand=\"True\"\n          DisplayTime=\"{Binding CurrentTime}\"/>\n",[3086,16282,16283,16298,16307,16316],{"__ignoreMap":3084},[3089,16284,16285,16287,16290,16292,16294,16296],{"class":3091,"line":3092},[3089,16286,3178],{"class":3177},[3089,16288,16289],{"class":3181},"hc:Clock",[3089,16291,8880],{"class":3185},[3089,16293,3189],{"class":3099},[3089,16295,9643],{"class":3192},[3089,16297,3526],{"class":3099},[3089,16299,16300,16303,16305],{"class":3091,"line":3196},[3089,16301,16302],{"class":3185},"          Height",[3089,16304,3189],{"class":3099},[3089,16306,9167],{"class":3192},[3089,16308,16309,16312,16314],{"class":3091,"line":3207},[3089,16310,16311],{"class":3185},"          ShowSecondHand",[3089,16313,3189],{"class":3099},[3089,16315,7411],{"class":3192},[3089,16317,16318,16321,16323,16326],{"class":3091,"line":3218},[3089,16319,16320],{"class":3185},"          DisplayTime",[3089,16322,3189],{"class":3099},[3089,16324,16325],{"class":3192},"\"{Binding CurrentTime}\"",[3089,16327,3292],{"class":3177},[3000,16329,16331],{"id":16330},"comparison-та-diff","Comparison та Diff",[2964,16333,16334,16337],{},[2983,16335,16336],{},"CompareSlider"," — порівняння двох зображень:",[3079,16339,16341],{"className":3168,"code":16340,"language":3170,"meta":3084,"style":3084},"\u003Chc:CompareSlider SourceLeft=\"/Assets/before.jpg\"\n                  SourceRight=\"/Assets/after.jpg\"\n                  Width=\"600\"\n                  Height=\"400\"/>\n",[3086,16342,16343,16358,16368,16376],{"__ignoreMap":3084},[3089,16344,16345,16347,16350,16353,16355],{"class":3091,"line":3092},[3089,16346,3178],{"class":3177},[3089,16348,16349],{"class":3181},"hc:CompareSlider",[3089,16351,16352],{"class":3185}," SourceLeft",[3089,16354,3189],{"class":3099},[3089,16356,16357],{"class":3192},"\"/Assets/before.jpg\"\n",[3089,16359,16360,16363,16365],{"class":3091,"line":3196},[3089,16361,16362],{"class":3185},"                  SourceRight",[3089,16364,3189],{"class":3099},[3089,16366,16367],{"class":3192},"\"/Assets/after.jpg\"\n",[3089,16369,16370,16372,16374],{"class":3091,"line":3207},[3089,16371,14989],{"class":3185},[3089,16373,3189],{"class":3099},[3089,16375,10698],{"class":3192},[3089,16377,16378,16380,16382,16385],{"class":3091,"line":3218},[3089,16379,14998],{"class":3185},[3089,16381,3189],{"class":3099},[3089,16383,16384],{"class":3192},"\"400\"",[3089,16386,3292],{"class":3177},[2964,16388,16389],{},"CompareSlider дозволяє перетягувати повзунок для порівняння двох зображень (до/після, оригінал/відредаговане, тощо).",[2964,16391,16392,16395],{},[2983,16393,16394],{},"Magnifier"," — лупа для зображень:",[3079,16397,16399],{"className":3168,"code":16398,"language":3170,"meta":3084,"style":3084},"\u003Chc:Magnifier Target=\"{Binding ElementName=TargetImage}\"\n              Width=\"150\"\n              Height=\"150\"\n              Scale=\"2\"/>\n",[3086,16400,16401,16416,16425,16434],{"__ignoreMap":3084},[3089,16402,16403,16405,16408,16411,16413],{"class":3091,"line":3092},[3089,16404,3178],{"class":3177},[3089,16406,16407],{"class":3181},"hc:Magnifier",[3089,16409,16410],{"class":3185}," Target",[3089,16412,3189],{"class":3099},[3089,16414,16415],{"class":3192},"\"{Binding ElementName=TargetImage}\"\n",[3089,16417,16418,16421,16423],{"class":3091,"line":3196},[3089,16419,16420],{"class":3185},"              Width",[3089,16422,3189],{"class":3099},[3089,16424,13331],{"class":3192},[3089,16426,16427,16430,16432],{"class":3091,"line":3207},[3089,16428,16429],{"class":3185},"              Height",[3089,16431,3189],{"class":3099},[3089,16433,13331],{"class":3192},[3089,16435,16436,16439,16441,16443],{"class":3091,"line":3218},[3089,16437,16438],{"class":3185},"              Scale",[3089,16440,3189],{"class":3099},[3089,16442,15813],{"class":3192},[3089,16444,3292],{"class":3177},[3000,16446,16448],{"id":16447},"special-контроли","Special контроли",[2964,16450,16451,16454],{},[2983,16452,16453],{},"ChatBubble"," — бульбашка чату:",[3079,16456,16458],{"className":3168,"code":16457,"language":3170,"meta":3084,"style":3084},"\u003Chc:ChatBubble Role=\"Sender\" \n               Content=\"Привіт! Як справи?\"\n               Time=\"14:30\"/>\n\n\u003Chc:ChatBubble Role=\"Receiver\" \n               Content=\"Все добре, дякую!\"\n               Time=\"14:32\"/>\n",[3086,16459,16460,16477,16487,16499,16503,16518,16527],{"__ignoreMap":3084},[3089,16461,16462,16464,16467,16470,16472,16475],{"class":3091,"line":3092},[3089,16463,3178],{"class":3177},[3089,16465,16466],{"class":3181},"hc:ChatBubble",[3089,16468,16469],{"class":3185}," Role",[3089,16471,3189],{"class":3099},[3089,16473,16474],{"class":3192},"\"Sender\"",[3089,16476,3526],{"class":3099},[3089,16478,16479,16482,16484],{"class":3091,"line":3196},[3089,16480,16481],{"class":3185},"               Content",[3089,16483,3189],{"class":3099},[3089,16485,16486],{"class":3192},"\"Привіт! Як справи?\"\n",[3089,16488,16489,16492,16494,16497],{"class":3091,"line":3207},[3089,16490,16491],{"class":3185},"               Time",[3089,16493,3189],{"class":3099},[3089,16495,16496],{"class":3192},"\"14:30\"",[3089,16498,3292],{"class":3177},[3089,16500,16501],{"class":3091,"line":3218},[3089,16502,4263],{"emptyLinePlaceholder":4262},[3089,16504,16505,16507,16509,16511,16513,16516],{"class":3091,"line":3229},[3089,16506,3178],{"class":3177},[3089,16508,16466],{"class":3181},[3089,16510,16469],{"class":3185},[3089,16512,3189],{"class":3099},[3089,16514,16515],{"class":3192},"\"Receiver\"",[3089,16517,3526],{"class":3099},[3089,16519,16520,16522,16524],{"class":3091,"line":3243},[3089,16521,16481],{"class":3185},[3089,16523,3189],{"class":3099},[3089,16525,16526],{"class":3192},"\"Все добре, дякую!\"\n",[3089,16528,16529,16531,16533,16536],{"class":3091,"line":3254},[3089,16530,16491],{"class":3185},[3089,16532,3189],{"class":3099},[3089,16534,16535],{"class":3192},"\"14:32\"",[3089,16537,3292],{"class":3177},[2964,16539,16540],{},"ChatBubble автоматично вирівнює повідомлення (відправник праворуч, отримувач ліворуч) та додає час.",[2964,16542,16543,16546],{},[2983,16544,16545],{},"FloatingBlock"," — плаваючий блок:",[3079,16548,16550],{"className":3168,"code":16549,"language":3170,"meta":3084,"style":3084},"\u003Chc:FloatingBlock Duration=\"0:0:5\"\n                  ToX=\"100\"\n                  ToY=\"-100\"\n                  IsRunning=\"True\">\n    \u003CTextBlock Text=\"+10 балів\" \n               FontSize=\"20\" \n               FontWeight=\"Bold\"\n               Foreground=\"Green\"/>\n\u003C/hc:FloatingBlock>\n",[3086,16551,16552,16567,16576,16586,16596,16611,16622,16631,16643],{"__ignoreMap":3084},[3089,16553,16554,16556,16559,16562,16564],{"class":3091,"line":3092},[3089,16555,3178],{"class":3177},[3089,16557,16558],{"class":3181},"hc:FloatingBlock",[3089,16560,16561],{"class":3185}," Duration",[3089,16563,3189],{"class":3099},[3089,16565,16566],{"class":3192},"\"0:0:5\"\n",[3089,16568,16569,16572,16574],{"class":3091,"line":3196},[3089,16570,16571],{"class":3185},"                  ToX",[3089,16573,3189],{"class":3099},[3089,16575,7637],{"class":3192},[3089,16577,16578,16581,16583],{"class":3091,"line":3207},[3089,16579,16580],{"class":3185},"                  ToY",[3089,16582,3189],{"class":3099},[3089,16584,16585],{"class":3192},"\"-100\"\n",[3089,16587,16588,16590,16592,16594],{"class":3091,"line":3218},[3089,16589,15630],{"class":3185},[3089,16591,3189],{"class":3099},[3089,16593,7190],{"class":3192},[3089,16595,3240],{"class":3177},[3089,16597,16598,16600,16602,16604,16606,16609],{"class":3091,"line":3229},[3089,16599,3246],{"class":3177},[3089,16601,3583],{"class":3181},[3089,16603,3586],{"class":3185},[3089,16605,3189],{"class":3099},[3089,16607,16608],{"class":3192},"\"+10 балів\"",[3089,16610,3526],{"class":3099},[3089,16612,16613,16616,16618,16620],{"class":3091,"line":3243},[3089,16614,16615],{"class":3185},"               FontSize",[3089,16617,3189],{"class":3099},[3089,16619,3565],{"class":3192},[3089,16621,3526],{"class":3099},[3089,16623,16624,16627,16629],{"class":3091,"line":3254},[3089,16625,16626],{"class":3185},"               FontWeight",[3089,16628,3189],{"class":3099},[3089,16630,3615],{"class":3192},[3089,16632,16633,16636,16638,16641],{"class":3091,"line":3265},[3089,16634,16635],{"class":3185},"               Foreground",[3089,16637,3189],{"class":3099},[3089,16639,16640],{"class":3192},"\"Green\"",[3089,16642,3292],{"class":3177},[3089,16644,16645,16647,16649],{"class":3091,"line":3276},[3089,16646,3344],{"class":3177},[3089,16648,16558],{"class":3181},[3089,16650,3240],{"class":3177},[2964,16652,16653],{},"FloatingBlock створює анімацію плаваючого елемента (корисно для ігор, gamification, тощо).",[2959,16655,16657],{"id":16656},"utilities-та-helpers","Utilities та Helpers",[2964,16659,16660],{},"HandyControl надає набір attached properties, behaviors, converters та extensions для спрощення розробки.",[3000,16662,16664],{"id":16663},"attached-properties","Attached Properties",[2964,16666,16667,16669],{},[2983,16668,7429],{}," — додає додаткову інформацію до контролів:",[3079,16671,16673],{"className":3168,"code":16672,"language":3170,"meta":3084,"style":3084},"\u003Chc:TextBox hc:InfoElement.Title=\"Назва поля\"\n            hc:InfoElement.Placeholder=\"Введіть значення\"\n            hc:InfoElement.Necessary=\"True\"\n            hc:InfoElement.Symbol=\"★\"/>\n",[3086,16674,16675,16688,16697,16705],{"__ignoreMap":3084},[3089,16676,16677,16679,16681,16683,16685],{"class":3091,"line":3092},[3089,16678,3178],{"class":3177},[3089,16680,3639],{"class":3181},[3089,16682,3642],{"class":3185},[3089,16684,3189],{"class":3099},[3089,16686,16687],{"class":3192},"\"Назва поля\"\n",[3089,16689,16690,16692,16694],{"class":3091,"line":3196},[3089,16691,7396],{"class":3185},[3089,16693,3189],{"class":3099},[3089,16695,16696],{"class":3192},"\"Введіть значення\"\n",[3089,16698,16699,16701,16703],{"class":3091,"line":3207},[3089,16700,7406],{"class":3185},[3089,16702,3189],{"class":3099},[3089,16704,7411],{"class":3192},[3089,16706,16707,16710,16712,16715],{"class":3091,"line":3218},[3089,16708,16709],{"class":3185},"            hc:InfoElement.Symbol",[3089,16711,3189],{"class":3099},[3089,16713,16714],{"class":3192},"\"★\"",[3089,16716,3292],{"class":3177},[2964,16718,16719,16722],{},[2983,16720,16721],{},"BorderElement"," — для стилізації рамок:",[3079,16724,16726],{"className":3168,"code":16725,"language":3170,"meta":3084,"style":3084},"\u003CBorder hc:BorderElement.Circular=\"True\"\n        hc:BorderElement.CornerRadius=\"10\"\n        Width=\"100\" Height=\"100\"/>\n",[3086,16727,16728,16741,16750],{"__ignoreMap":3084},[3089,16729,16730,16732,16734,16737,16739],{"class":3091,"line":3092},[3089,16731,3178],{"class":3177},[3089,16733,3882],{"class":3181},[3089,16735,16736],{"class":3185}," hc:BorderElement.Circular",[3089,16738,3189],{"class":3099},[3089,16740,7411],{"class":3192},[3089,16742,16743,16746,16748],{"class":3091,"line":3196},[3089,16744,16745],{"class":3185},"        hc:BorderElement.CornerRadius",[3089,16747,3189],{"class":3099},[3089,16749,8614],{"class":3192},[3089,16751,16752,16755,16757,16759,16761,16763,16765],{"class":3091,"line":3207},[3089,16753,16754],{"class":3185},"        Width",[3089,16756,3189],{"class":3099},[3089,16758,8922],{"class":3192},[3089,16760,6752],{"class":3185},[3089,16762,3189],{"class":3099},[3089,16764,8922],{"class":3192},[3089,16766,3292],{"class":3177},[2964,16768,16769,16772],{},[2983,16770,16771],{},"TitleElement"," — для додавання заголовків:",[3079,16774,16776],{"className":3168,"code":16775,"language":3170,"meta":3084,"style":3084},"\u003CGroupBox hc:TitleElement.Title=\"Налаштування\"\n          hc:TitleElement.TitlePlacement=\"Left\"/>\n",[3086,16777,16778,16792],{"__ignoreMap":3084},[3089,16779,16780,16782,16784,16787,16789],{"class":3091,"line":3092},[3089,16781,3178],{"class":3177},[3089,16783,10265],{"class":3181},[3089,16785,16786],{"class":3185}," hc:TitleElement.Title",[3089,16788,3189],{"class":3099},[3089,16790,16791],{"class":3192},"\"Налаштування\"\n",[3089,16793,16794,16797,16799,16801],{"class":3091,"line":3196},[3089,16795,16796],{"class":3185},"          hc:TitleElement.TitlePlacement",[3089,16798,3189],{"class":3099},[3089,16800,3758],{"class":3192},[3089,16802,3292],{"class":3177},[2964,16804,16805,16808],{},[2983,16806,16807],{},"IconElement"," — для додавання іконок:",[3079,16810,16812],{"className":3168,"code":16811,"language":3170,"meta":3084,"style":3084},"\u003CButton Content=\"Зберегти\"\n        hc:IconElement.Geometry=\"{StaticResource SaveGeometry}\"\n        hc:IconElement.Width=\"16\"\n        hc:IconElement.Height=\"16\"/>\n",[3086,16813,16814,16827,16837,16846],{"__ignoreMap":3084},[3089,16815,16816,16818,16820,16822,16824],{"class":3091,"line":3092},[3089,16817,3178],{"class":3177},[3089,16819,4118],{"class":3181},[3089,16821,3729],{"class":3185},[3089,16823,3189],{"class":3099},[3089,16825,16826],{"class":3192},"\"Зберегти\"\n",[3089,16828,16829,16832,16834],{"class":3091,"line":3196},[3089,16830,16831],{"class":3185},"        hc:IconElement.Geometry",[3089,16833,3189],{"class":3099},[3089,16835,16836],{"class":3192},"\"{StaticResource SaveGeometry}\"\n",[3089,16838,16839,16842,16844],{"class":3091,"line":3207},[3089,16840,16841],{"class":3185},"        hc:IconElement.Width",[3089,16843,3189],{"class":3099},[3089,16845,13237],{"class":3192},[3089,16847,16848,16851,16853,16855],{"class":3091,"line":3218},[3089,16849,16850],{"class":3185},"        hc:IconElement.Height",[3089,16852,3189],{"class":3099},[3089,16854,6749],{"class":3192},[3089,16856,3292],{"class":3177},[3000,16858,16860],{"id":16859},"behaviors","Behaviors",[2964,16862,16863,16866],{},[2983,16864,16865],{},"DragElement"," — drag and drop функціональність:",[3079,16868,16870],{"className":3168,"code":16869,"language":3170,"meta":3084,"style":3084},"\u003CBorder hc:DragElement.IsDraggable=\"True\"\n        Background=\"LightBlue\"\n        Width=\"100\" Height=\"100\">\n    \u003CTextBlock Text=\"Перетягни мене\" \n               HorizontalAlignment=\"Center\" \n               VerticalAlignment=\"Center\"/>\n\u003C/Border>\n",[3086,16871,16872,16885,16895,16911,16925,16936,16947],{"__ignoreMap":3084},[3089,16873,16874,16876,16878,16881,16883],{"class":3091,"line":3092},[3089,16875,3178],{"class":3177},[3089,16877,3882],{"class":3181},[3089,16879,16880],{"class":3185}," hc:DragElement.IsDraggable",[3089,16882,3189],{"class":3099},[3089,16884,7411],{"class":3192},[3089,16886,16887,16890,16892],{"class":3091,"line":3196},[3089,16888,16889],{"class":3185},"        Background",[3089,16891,3189],{"class":3099},[3089,16893,16894],{"class":3192},"\"LightBlue\"\n",[3089,16896,16897,16899,16901,16903,16905,16907,16909],{"class":3091,"line":3207},[3089,16898,16754],{"class":3185},[3089,16900,3189],{"class":3099},[3089,16902,8922],{"class":3192},[3089,16904,6752],{"class":3185},[3089,16906,3189],{"class":3099},[3089,16908,8922],{"class":3192},[3089,16910,3240],{"class":3177},[3089,16912,16913,16915,16917,16919,16921,16923],{"class":3091,"line":3218},[3089,16914,3246],{"class":3177},[3089,16916,3583],{"class":3181},[3089,16918,3586],{"class":3185},[3089,16920,3189],{"class":3099},[3089,16922,9791],{"class":3192},[3089,16924,3526],{"class":3099},[3089,16926,16927,16930,16932,16934],{"class":3091,"line":3229},[3089,16928,16929],{"class":3185},"               HorizontalAlignment",[3089,16931,3189],{"class":3099},[3089,16933,6397],{"class":3192},[3089,16935,3526],{"class":3099},[3089,16937,16938,16941,16943,16945],{"class":3091,"line":3243},[3089,16939,16940],{"class":3185},"               VerticalAlignment",[3089,16942,3189],{"class":3099},[3089,16944,6397],{"class":3192},[3089,16946,3292],{"class":3177},[3089,16948,16949,16951,16953],{"class":3091,"line":3254},[3089,16950,3344],{"class":3177},[3089,16952,3882],{"class":3181},[3089,16954,3240],{"class":3177},[3000,16956,16958],{"id":16957},"converters","Converters",[2964,16960,16961],{},"HandyControl включає набір корисних конвертерів:",[3079,16963,16965],{"className":3168,"code":16964,"language":3170,"meta":3084,"style":3084},"\u003C!-- Boolean to Visibility -->\n\u003CTextBlock Text=\"Видимий\" \n           Visibility=\"{Binding IsVisible, Converter={StaticResource Boolean2VisibilityConverter}}\"/>\n\n\u003C!-- Inverse Boolean -->\n\u003CCheckBox IsChecked=\"{Binding IsEnabled, Converter={StaticResource Boolean2BooleanReConverter}}\"/>\n\n\u003C!-- String to Visibility -->\n\u003CTextBlock Text=\"{Binding Message}\" \n           Visibility=\"{Binding Message, Converter={StaticResource String2VisibilityConverter}}\"/>\n\n\u003C!-- Number comparison -->\n\u003CButton IsEnabled=\"{Binding Count, Converter={StaticResource Number2BooleanConverter}, ConverterParameter='0'}\"/>\n",[3086,16966,16967,16972,16987,16999,17003,17008,17024,17028,17033,17048,17059,17063,17068],{"__ignoreMap":3084},[3089,16968,16969],{"class":3091,"line":3092},[3089,16970,16971],{"class":3279},"\u003C!-- Boolean to Visibility -->\n",[3089,16973,16974,16976,16978,16980,16982,16985],{"class":3091,"line":3196},[3089,16975,3178],{"class":3177},[3089,16977,3583],{"class":3181},[3089,16979,3586],{"class":3185},[3089,16981,3189],{"class":3099},[3089,16983,16984],{"class":3192},"\"Видимий\"",[3089,16986,3526],{"class":3099},[3089,16988,16989,16992,16994,16997],{"class":3091,"line":3207},[3089,16990,16991],{"class":3185},"           Visibility",[3089,16993,3189],{"class":3099},[3089,16995,16996],{"class":3192},"\"{Binding IsVisible, Converter={StaticResource Boolean2VisibilityConverter}}\"",[3089,16998,3292],{"class":3177},[3089,17000,17001],{"class":3091,"line":3218},[3089,17002,4263],{"emptyLinePlaceholder":4262},[3089,17004,17005],{"class":3091,"line":3229},[3089,17006,17007],{"class":3279},"\u003C!-- Inverse Boolean -->\n",[3089,17009,17010,17012,17015,17017,17019,17022],{"class":3091,"line":3243},[3089,17011,3178],{"class":3177},[3089,17013,17014],{"class":3181},"CheckBox",[3089,17016,7185],{"class":3185},[3089,17018,3189],{"class":3099},[3089,17020,17021],{"class":3192},"\"{Binding IsEnabled, Converter={StaticResource Boolean2BooleanReConverter}}\"",[3089,17023,3292],{"class":3177},[3089,17025,17026],{"class":3091,"line":3254},[3089,17027,4263],{"emptyLinePlaceholder":4262},[3089,17029,17030],{"class":3091,"line":3265},[3089,17031,17032],{"class":3279},"\u003C!-- String to Visibility -->\n",[3089,17034,17035,17037,17039,17041,17043,17046],{"class":3091,"line":3276},[3089,17036,3178],{"class":3177},[3089,17038,3583],{"class":3181},[3089,17040,3586],{"class":3185},[3089,17042,3189],{"class":3099},[3089,17044,17045],{"class":3192},"\"{Binding Message}\"",[3089,17047,3526],{"class":3099},[3089,17049,17050,17052,17054,17057],{"class":3091,"line":3283},[3089,17051,16991],{"class":3185},[3089,17053,3189],{"class":3099},[3089,17055,17056],{"class":3192},"\"{Binding Message, Converter={StaticResource String2VisibilityConverter}}\"",[3089,17058,3292],{"class":3177},[3089,17060,17061],{"class":3091,"line":3295},[3089,17062,4263],{"emptyLinePlaceholder":4262},[3089,17064,17065],{"class":3091,"line":3301},[3089,17066,17067],{"class":3279},"\u003C!-- Number comparison -->\n",[3089,17069,17070,17072,17074,17077,17079,17082],{"class":3091,"line":3311},[3089,17071,3178],{"class":3177},[3089,17073,4118],{"class":3181},[3089,17075,17076],{"class":3185}," IsEnabled",[3089,17078,3189],{"class":3099},[3089,17080,17081],{"class":3192},"\"{Binding Count, Converter={StaticResource Number2BooleanConverter}, ConverterParameter='0'}\"",[3089,17083,3292],{"class":3177},[2959,17085,17087],{"id":17086},"практичні-приклади","Практичні приклади",[3000,17089,17091],{"id":17090},"приклад-1-dashboard-додаток","Приклад 1: Dashboard додаток",[2964,17093,17094],{},"Створимо dashboard з бічним меню, статистичними картками, та графіками.",[2964,17096,17097,3165],{},[2983,17098,3467],{},[3079,17100,17102],{"className":3168,"code":17101,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"DashboardApp.MainWindow\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n           Title=\"Dashboard\" \n           Height=\"700\" \n           Width=\"1200\">\n    \u003CGrid>\n        \u003CGrid.ColumnDefinitions>\n            \u003CColumnDefinition Width=\"250\"/>\n            \u003CColumnDefinition Width=\"*\"/>\n        \u003C/Grid.ColumnDefinitions>\n        \n        \u003C!-- Бічне меню -->\n        \u003CBorder Grid.Column=\"0\" \n                Background=\"{DynamicResource RegionBrush}\"\n                BorderThickness=\"0,0,1,0\"\n                BorderBrush=\"{DynamicResource BorderBrush}\">\n            \u003CStackPanel>\n                \u003CTextBlock Text=\"Dashboard\" \n                           FontSize=\"24\" \n                           FontWeight=\"Bold\"\n                           Margin=\"20\"/>\n                \n                \u003Chc:SideMenu AutoSelect=\"True\" \n                             ExpandMode=\"Accordion\"\n                             Margin=\"10\">\n                    \u003Chc:SideMenuItem Header=\"Головна\" \n                                     hc:IconElement.Geometry=\"{StaticResource HomeGeometry}\"\n                                     IsSelected=\"True\"/>\n                    \u003Chc:SideMenuItem Header=\"Статистика\" \n                                     hc:IconElement.Geometry=\"{StaticResource ChartGeometry}\"/>\n                    \u003Chc:SideMenuItem Header=\"Користувачі\" \n                                     hc:IconElement.Geometry=\"{StaticResource UsersGeometry}\"/>\n                    \u003Chc:SideMenuItem Header=\"Налаштування\" \n                                     hc:IconElement.Geometry=\"{StaticResource SettingsGeometry}\"/>\n                \u003C/hc:SideMenu>\n            \u003C/StackPanel>\n        \u003C/Border>\n        \n        \u003C!-- Основний контент -->\n        \u003CScrollViewer Grid.Column=\"1\">\n            \u003CStackPanel Margin=\"30\">\n                \u003CTextBlock Text=\"Огляд\" \n                           FontSize=\"28\" \n                           FontWeight=\"Bold\"\n                           Margin=\"0,0,0,20\"/>\n                \n                \u003C!-- Статистичні картки -->\n                \u003Chc:UniformSpacingPanel Spacing=\"20\" \n                                        Orientation=\"Horizontal\"\n                                        Margin=\"0,0,0,30\">\n                    \u003C!-- Картка 1: Користувачі -->\n                    \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n                             Width=\"250\" \n                             Height=\"150\"\n                             Padding=\"20\">\n                        \u003CGrid>\n                            \u003CGrid.RowDefinitions>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                                \u003CRowDefinition Height=\"*\"/>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                            \u003C/Grid.RowDefinitions>\n                            \n                            \u003CTextBlock Text=\"Користувачі\" \n                                       FontSize=\"14\"\n                                       Foreground=\"{DynamicResource ThirdlyTextBrush}\"/>\n                            \n                            \u003CTextBlock Grid.Row=\"1\" \n                                       Text=\"1,234\" \n                                       FontSize=\"36\"\n                                       FontWeight=\"Bold\"\n                                       VerticalAlignment=\"Center\"/>\n                            \n                            \u003CStackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                                \u003CPath Data=\"{StaticResource UpGeometry}\" \n                                      Fill=\"Green\" \n                                      Width=\"12\" Height=\"12\"\n                                      Margin=\"0,0,5,0\"/>\n                                \u003CTextBlock Text=\"+12% від минулого місяця\" \n                                           FontSize=\"12\"\n                                           Foreground=\"Green\"/>\n                            \u003C/StackPanel>\n                        \u003C/Grid>\n                    \u003C/hc:Card>\n                    \n                    \u003C!-- Картка 2: Дохід -->\n                    \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n                             Width=\"250\" \n                             Height=\"150\"\n                             Padding=\"20\">\n                        \u003CGrid>\n                            \u003CGrid.RowDefinitions>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                                \u003CRowDefinition Height=\"*\"/>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                            \u003C/Grid.RowDefinitions>\n                            \n                            \u003CTextBlock Text=\"Дохід\" \n                                       FontSize=\"14\"\n                                       Foreground=\"{DynamicResource ThirdlyTextBrush}\"/>\n                            \n                            \u003CTextBlock Grid.Row=\"1\" \n                                       Text=\"$45,678\" \n                                       FontSize=\"36\"\n                                       FontWeight=\"Bold\"\n                                       VerticalAlignment=\"Center\"/>\n                            \n                            \u003CStackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                                \u003CPath Data=\"{StaticResource UpGeometry}\" \n                                      Fill=\"Green\" \n                                      Width=\"12\" Height=\"12\"\n                                      Margin=\"0,0,5,0\"/>\n                                \u003CTextBlock Text=\"+8% від минулого місяця\" \n                                           FontSize=\"12\"\n                                           Foreground=\"Green\"/>\n                            \u003C/StackPanel>\n                        \u003C/Grid>\n                    \u003C/hc:Card>\n                    \n                    \u003C!-- Картка 3: Замовлення -->\n                    \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n                             Width=\"250\" \n                             Height=\"150\"\n                             Padding=\"20\">\n                        \u003CGrid>\n                            \u003CGrid.RowDefinitions>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                                \u003CRowDefinition Height=\"*\"/>\n                                \u003CRowDefinition Height=\"Auto\"/>\n                            \u003C/Grid.RowDefinitions>\n                            \n                            \u003CTextBlock Text=\"Замовлення\" \n                                       FontSize=\"14\"\n                                       Foreground=\"{DynamicResource ThirdlyTextBrush}\"/>\n                            \n                            \u003CTextBlock Grid.Row=\"1\" \n                                       Text=\"567\" \n                                       FontSize=\"36\"\n                                       FontWeight=\"Bold\"\n                                       VerticalAlignment=\"Center\"/>\n                            \n                            \u003CStackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                                \u003CPath Data=\"{StaticResource DownGeometry}\" \n                                      Fill=\"Red\" \n                                      Width=\"12\" Height=\"12\"\n                                      Margin=\"0,0,5,0\"/>\n                                \u003CTextBlock Text=\"-3% від минулого місяця\" \n                                           FontSize=\"12\"\n                                           Foreground=\"Red\"/>\n                            \u003C/StackPanel>\n                        \u003C/Grid>\n                    \u003C/hc:Card>\n                \u003C/hc:UniformSpacingPanel>\n                \n                \u003C!-- Графік активності -->\n                \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n                         Padding=\"20\"\n                         Margin=\"0,0,0,20\">\n                    \u003CStackPanel>\n                        \u003CTextBlock Text=\"Активність користувачів\" \n                                   FontSize=\"18\" \n                                   FontWeight=\"Bold\"\n                                   Margin=\"0,0,0,20\"/>\n                        \n                        \u003C!-- Тут можна інтегрувати LiveCharts або інший графік -->\n                        \u003CBorder Height=\"300\" \n                                Background=\"{DynamicResource RegionBrush}\"\n                                CornerRadius=\"4\">\n                            \u003CTextBlock Text=\"[Графік активності]\" \n                                       HorizontalAlignment=\"Center\" \n                                       VerticalAlignment=\"Center\"\n                                       Foreground=\"{DynamicResource ThirdlyTextBrush}\"/>\n                        \u003C/Border>\n                    \u003C/StackPanel>\n                \u003C/hc:Card>\n                \n                \u003C!-- Останні транзакції -->\n                \u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" \n                         Padding=\"20\">\n                    \u003CStackPanel>\n                        \u003CTextBlock Text=\"Останні транзакції\" \n                                   FontSize=\"18\" \n                                   FontWeight=\"Bold\"\n                                   Margin=\"0,0,0,20\"/>\n                        \n                        \u003Chc:DataGrid ItemsSource=\"{Binding RecentTransactions}\"\n                                     AutoGenerateColumns=\"False\"\n                                     CanUserAddRows=\"False\"\n                                     HeadersVisibility=\"All\"\n                                     Height=\"300\">\n                            \u003CDataGrid.Columns>\n                                \u003CDataGridTextColumn Header=\"ID\" Binding=\"{Binding Id}\" Width=\"80\"/>\n                                \u003CDataGridTextColumn Header=\"Користувач\" Binding=\"{Binding UserName}\" Width=\"*\"/>\n                                \u003CDataGridTextColumn Header=\"Сума\" Binding=\"{Binding Amount, StringFormat=C}\" Width=\"120\"/>\n                                \u003CDataGridTextColumn Header=\"Дата\" Binding=\"{Binding Date, StringFormat='dd.MM.yyyy'}\" Width=\"120\"/>\n                                \u003CDataGridTemplateColumn Header=\"Статус\" Width=\"120\">\n                                    \u003CDataGridTemplateColumn.CellTemplate>\n                                        \u003CDataTemplate>\n                                            \u003Chc:Tag Content=\"{Binding Status}\" \n                                                    Style=\"{StaticResource TagSuccess}\"/>\n                                        \u003C/DataTemplate>\n                                    \u003C/DataGridTemplateColumn.CellTemplate>\n                                \u003C/DataGridTemplateColumn>\n                            \u003C/DataGrid.Columns>\n                        \u003C/hc:DataGrid>\n                    \u003C/StackPanel>\n                \u003C/hc:Card>\n            \u003C/StackPanel>\n        \u003C/ScrollViewer>\n    \u003C/Grid>\n\u003C/hc:Window>\n",[3086,17103,17104,17117,17125,17135,17146,17157,17165,17174,17190,17204,17212,17216,17221,17236,17245,17253,17264,17272,17286,17297,17306,17317,17322,17336,17346,17357,17371,17381,17392,17406,17417,17431,17442,17457,17468,17477,17486,17495,17500,17506,17521,17536,17552,17564,17573,17584,17589,17595,17610,17620,17633,17639,17654,17666,17676,17688,17697,17708,17726,17741,17756,17766,17772,17787,17798,17810,17815,17831,17844,17854,17864,17876,17881,17902,17918,17930,17946,17958,17974,17984,17996,18005,18015,18024,18030,18036,18051,18062,18071,18082,18091,18100,18115,18130,18145,18154,18159,18175,18184,18195,18200,18215,18227,18236,18245,18256,18261,18282,18297,18308,18323,18334,18350,18359,18370,18379,18388,18397,18402,18408,18423,18434,18443,18454,18463,18472,18487,18502,18517,18526,18531,18547,18556,18567,18572,18587,18599,18608,18617,18628,18633,18654,18670,18682,18697,18708,18724,18733,18744,18753,18762,18771,18780,18785,18791,18806,18816,18828,18837,18853,18865,18875,18887,18893,18899,18914,18924,18936,18952,18964,18974,18985,18994,19003,19012,19017,19023,19038,19049,19058,19074,19085,19094,19105,19110,19124,19134,19144,19154,19166,19175,19202,19231,19260,19289,19311,19321,19331,19348,19361,19371,19381,19391,19400,19409,19418,19427,19436,19445,19454],{"__ignoreMap":3084},[3089,17105,17106,17108,17110,17112,17114],{"class":3091,"line":3092},[3089,17107,3178],{"class":3177},[3089,17109,3479],{"class":3181},[3089,17111,3186],{"class":3185},[3089,17113,3189],{"class":3099},[3089,17115,17116],{"class":3192},"\"DashboardApp.MainWindow\"\n",[3089,17118,17119,17121,17123],{"class":3091,"line":3196},[3089,17120,3509],{"class":3185},[3089,17122,3189],{"class":3099},[3089,17124,3226],{"class":3192},[3089,17126,17127,17129,17131,17133],{"class":3091,"line":3207},[3089,17128,3518],{"class":3185},[3089,17130,3189],{"class":3099},[3089,17132,11520],{"class":3192},[3089,17134,3526],{"class":3099},[3089,17136,17137,17139,17141,17144],{"class":3091,"line":3218},[3089,17138,3531],{"class":3185},[3089,17140,3189],{"class":3099},[3089,17142,17143],{"class":3192},"\"700\"",[3089,17145,3526],{"class":3099},[3089,17147,17148,17150,17152,17155],{"class":3091,"line":3229},[3089,17149,3543],{"class":3185},[3089,17151,3189],{"class":3099},[3089,17153,17154],{"class":3192},"\"1200\"",[3089,17156,3240],{"class":3177},[3089,17158,17159,17161,17163],{"class":3091,"line":3243},[3089,17160,3246],{"class":3177},[3089,17162,3557],{"class":3181},[3089,17164,3240],{"class":3177},[3089,17166,17167,17169,17172],{"class":3091,"line":3254},[3089,17168,3257],{"class":3177},[3089,17170,17171],{"class":3181},"Grid.ColumnDefinitions",[3089,17173,3240],{"class":3177},[3089,17175,17176,17178,17181,17183,17185,17188],{"class":3091,"line":3265},[3089,17177,3268],{"class":3177},[3089,17179,17180],{"class":3181},"ColumnDefinition",[3089,17182,8880],{"class":3185},[3089,17184,3189],{"class":3099},[3089,17186,17187],{"class":3192},"\"250\"",[3089,17189,3292],{"class":3177},[3089,17191,17192,17194,17196,17198,17200,17202],{"class":3091,"line":3276},[3089,17193,3268],{"class":3177},[3089,17195,17180],{"class":3181},[3089,17197,8880],{"class":3185},[3089,17199,3189],{"class":3099},[3089,17201,12653],{"class":3192},[3089,17203,3292],{"class":3177},[3089,17205,17206,17208,17210],{"class":3091,"line":3283},[3089,17207,3324],{"class":3177},[3089,17209,17171],{"class":3181},[3089,17211,3240],{"class":3177},[3089,17213,17214],{"class":3091,"line":3295},[3089,17215,3875],{"class":3099},[3089,17217,17218],{"class":3091,"line":3301},[3089,17219,17220],{"class":3279},"        \u003C!-- Бічне меню -->\n",[3089,17222,17223,17225,17227,17230,17232,17234],{"class":3091,"line":3311},[3089,17224,3257],{"class":3177},[3089,17226,3882],{"class":3181},[3089,17228,17229],{"class":3185}," Grid.Column",[3089,17231,3189],{"class":3099},[3089,17233,3981],{"class":3192},[3089,17235,3526],{"class":3099},[3089,17237,17238,17240,17242],{"class":3091,"line":3321},[3089,17239,4131],{"class":3185},[3089,17241,3189],{"class":3099},[3089,17243,17244],{"class":3192},"\"{DynamicResource RegionBrush}\"\n",[3089,17246,17247,17249,17251],{"class":3091,"line":3331},[3089,17248,4163],{"class":3185},[3089,17250,3189],{"class":3099},[3089,17252,12107],{"class":3192},[3089,17254,17255,17258,17260,17262],{"class":3091,"line":3341},[3089,17256,17257],{"class":3185},"                BorderBrush",[3089,17259,3189],{"class":3099},[3089,17261,12117],{"class":3192},[3089,17263,3240],{"class":3177},[3089,17265,17266,17268,17270],{"class":3091,"line":3660},[3089,17267,3268],{"class":3177},[3089,17269,3574],{"class":3181},[3089,17271,3240],{"class":3177},[3089,17273,17274,17276,17278,17280,17282,17284],{"class":3091,"line":3673},[3089,17275,3286],{"class":3177},[3089,17277,3583],{"class":3181},[3089,17279,3586],{"class":3185},[3089,17281,3189],{"class":3099},[3089,17283,11520],{"class":3192},[3089,17285,3526],{"class":3099},[3089,17287,17288,17291,17293,17295],{"class":3091,"line":3678},[3089,17289,17290],{"class":3185},"                           FontSize",[3089,17292,3189],{"class":3099},[3089,17294,3603],{"class":3192},[3089,17296,3526],{"class":3099},[3089,17298,17299,17302,17304],{"class":3091,"line":3693},[3089,17300,17301],{"class":3185},"                           FontWeight",[3089,17303,3189],{"class":3099},[3089,17305,3615],{"class":3192},[3089,17307,17308,17311,17313,17315],{"class":3091,"line":3704},[3089,17309,17310],{"class":3185},"                           Margin",[3089,17312,3189],{"class":3099},[3089,17314,3565],{"class":3192},[3089,17316,3292],{"class":3177},[3089,17318,17319],{"class":3091,"line":3716},[3089,17320,17321],{"class":3099},"                \n",[3089,17323,17324,17326,17328,17330,17332,17334],{"class":3091,"line":3721},[3089,17325,3286],{"class":3177},[3089,17327,11475],{"class":3181},[3089,17329,11478],{"class":3185},[3089,17331,3189],{"class":3099},[3089,17333,7190],{"class":3192},[3089,17335,3526],{"class":3099},[3089,17337,17338,17341,17343],{"class":3091,"line":3739},[3089,17339,17340],{"class":3185},"                             ExpandMode",[3089,17342,3189],{"class":3099},[3089,17344,17345],{"class":3192},"\"Accordion\"\n",[3089,17347,17348,17351,17353,17355],{"class":3091,"line":3750},[3089,17349,17350],{"class":3185},"                             Margin",[3089,17352,3189],{"class":3099},[3089,17354,3906],{"class":3192},[3089,17356,3240],{"class":3177},[3089,17358,17359,17361,17363,17365,17367,17369],{"class":3091,"line":3763},[3089,17360,9005],{"class":3177},[3089,17362,11513],{"class":3181},[3089,17364,10281],{"class":3185},[3089,17366,3189],{"class":3099},[3089,17368,11307],{"class":3192},[3089,17370,3526],{"class":3099},[3089,17372,17373,17376,17378],{"class":3091,"line":3772},[3089,17374,17375],{"class":3185},"                                     hc:IconElement.Geometry",[3089,17377,3189],{"class":3099},[3089,17379,17380],{"class":3192},"\"{StaticResource HomeGeometry}\"\n",[3089,17382,17383,17386,17388,17390],{"class":3091,"line":3781},[3089,17384,17385],{"class":3185},"                                     IsSelected",[3089,17387,3189],{"class":3099},[3089,17389,7190],{"class":3192},[3089,17391,3292],{"class":3177},[3089,17393,17394,17396,17398,17400,17402,17404],{"class":3091,"line":4190},[3089,17395,9005],{"class":3177},[3089,17397,11513],{"class":3181},[3089,17399,10281],{"class":3185},[3089,17401,3189],{"class":3099},[3089,17403,9923],{"class":3192},[3089,17405,3526],{"class":3099},[3089,17407,17408,17410,17412,17415],{"class":3091,"line":5750},[3089,17409,17375],{"class":3185},[3089,17411,3189],{"class":3099},[3089,17413,17414],{"class":3192},"\"{StaticResource ChartGeometry}\"",[3089,17416,3292],{"class":3177},[3089,17418,17419,17421,17423,17425,17427,17429],{"class":3091,"line":5755},[3089,17420,9005],{"class":3177},[3089,17422,11513],{"class":3181},[3089,17424,10281],{"class":3185},[3089,17426,3189],{"class":3099},[3089,17428,11547],{"class":3192},[3089,17430,3526],{"class":3099},[3089,17432,17434,17436,17438,17440],{"class":3091,"line":17433},32,[3089,17435,17375],{"class":3185},[3089,17437,3189],{"class":3099},[3089,17439,11558],{"class":3192},[3089,17441,3292],{"class":3177},[3089,17443,17445,17447,17449,17451,17453,17455],{"class":3091,"line":17444},33,[3089,17446,9005],{"class":3177},[3089,17448,11513],{"class":3181},[3089,17450,10281],{"class":3185},[3089,17452,3189],{"class":3099},[3089,17454,11351],{"class":3192},[3089,17456,3526],{"class":3099},[3089,17458,17460,17462,17464,17466],{"class":3091,"line":17459},34,[3089,17461,17375],{"class":3185},[3089,17463,3189],{"class":3099},[3089,17465,11583],{"class":3192},[3089,17467,3292],{"class":3177},[3089,17469,17471,17473,17475],{"class":3091,"line":17470},35,[3089,17472,9047],{"class":3177},[3089,17474,11475],{"class":3181},[3089,17476,3240],{"class":3177},[3089,17478,17480,17482,17484],{"class":3091,"line":17479},36,[3089,17481,3314],{"class":3177},[3089,17483,3574],{"class":3181},[3089,17485,3240],{"class":3177},[3089,17487,17489,17491,17493],{"class":3091,"line":17488},37,[3089,17490,3324],{"class":3177},[3089,17492,3882],{"class":3181},[3089,17494,3240],{"class":3177},[3089,17496,17498],{"class":3091,"line":17497},38,[3089,17499,3875],{"class":3099},[3089,17501,17503],{"class":3091,"line":17502},39,[3089,17504,17505],{"class":3279},"        \u003C!-- Основний контент -->\n",[3089,17507,17509,17511,17513,17515,17517,17519],{"class":3091,"line":17508},40,[3089,17510,3257],{"class":3177},[3089,17512,10591],{"class":3181},[3089,17514,17229],{"class":3185},[3089,17516,3189],{"class":3099},[3089,17518,3898],{"class":3192},[3089,17520,3240],{"class":3177},[3089,17522,17524,17526,17528,17530,17532,17534],{"class":3091,"line":17523},41,[3089,17525,3268],{"class":3177},[3089,17527,3574],{"class":3181},[3089,17529,3560],{"class":3185},[3089,17531,3189],{"class":3099},[3089,17533,10492],{"class":3192},[3089,17535,3240],{"class":3177},[3089,17537,17539,17541,17543,17545,17547,17550],{"class":3091,"line":17538},42,[3089,17540,3286],{"class":3177},[3089,17542,3583],{"class":3181},[3089,17544,3586],{"class":3185},[3089,17546,3189],{"class":3099},[3089,17548,17549],{"class":3192},"\"Огляд\"",[3089,17551,3526],{"class":3099},[3089,17553,17555,17557,17559,17562],{"class":3091,"line":17554},43,[3089,17556,17290],{"class":3185},[3089,17558,3189],{"class":3099},[3089,17560,17561],{"class":3192},"\"28\"",[3089,17563,3526],{"class":3099},[3089,17565,17567,17569,17571],{"class":3091,"line":17566},44,[3089,17568,17301],{"class":3185},[3089,17570,3189],{"class":3099},[3089,17572,3615],{"class":3192},[3089,17574,17576,17578,17580,17582],{"class":3091,"line":17575},45,[3089,17577,17310],{"class":3185},[3089,17579,3189],{"class":3099},[3089,17581,3625],{"class":3192},[3089,17583,3292],{"class":3177},[3089,17585,17587],{"class":3091,"line":17586},46,[3089,17588,17321],{"class":3099},[3089,17590,17592],{"class":3091,"line":17591},47,[3089,17593,17594],{"class":3279},"                \u003C!-- Статистичні картки -->\n",[3089,17596,17598,17600,17602,17604,17606,17608],{"class":3091,"line":17597},48,[3089,17599,3286],{"class":3177},[3089,17601,9238],{"class":3181},[3089,17603,9241],{"class":3185},[3089,17605,3189],{"class":3099},[3089,17607,3565],{"class":3192},[3089,17609,3526],{"class":3099},[3089,17611,17613,17616,17618],{"class":3091,"line":17612},49,[3089,17614,17615],{"class":3185},"                                        Orientation",[3089,17617,3189],{"class":3099},[3089,17619,9257],{"class":3192},[3089,17621,17623,17626,17628,17631],{"class":3091,"line":17622},50,[3089,17624,17625],{"class":3185},"                                        Margin",[3089,17627,3189],{"class":3099},[3089,17629,17630],{"class":3192},"\"0,0,0,30\"",[3089,17632,3240],{"class":3177},[3089,17634,17636],{"class":3091,"line":17635},51,[3089,17637,17638],{"class":3279},"                    \u003C!-- Картка 1: Користувачі -->\n",[3089,17640,17642,17644,17646,17648,17650,17652],{"class":3091,"line":17641},52,[3089,17643,9005],{"class":3177},[3089,17645,9871],{"class":3181},[3089,17647,9874],{"class":3185},[3089,17649,3189],{"class":3099},[3089,17651,9879],{"class":3192},[3089,17653,3526],{"class":3099},[3089,17655,17657,17660,17662,17664],{"class":3091,"line":17656},53,[3089,17658,17659],{"class":3185},"                             Width",[3089,17661,3189],{"class":3099},[3089,17663,17187],{"class":3192},[3089,17665,3526],{"class":3099},[3089,17667,17669,17672,17674],{"class":3091,"line":17668},54,[3089,17670,17671],{"class":3185},"                             Height",[3089,17673,3189],{"class":3099},[3089,17675,13331],{"class":3192},[3089,17677,17679,17682,17684,17686],{"class":3091,"line":17678},55,[3089,17680,17681],{"class":3185},"                             Padding",[3089,17683,3189],{"class":3099},[3089,17685,3565],{"class":3192},[3089,17687,3240],{"class":3177},[3089,17689,17691,17693,17695],{"class":3091,"line":17690},56,[3089,17692,12453],{"class":3177},[3089,17694,3557],{"class":3181},[3089,17696,3240],{"class":3177},[3089,17698,17700,17703,17706],{"class":3091,"line":17699},57,[3089,17701,17702],{"class":3177},"                            \u003C",[3089,17704,17705],{"class":3181},"Grid.RowDefinitions",[3089,17707,3240],{"class":3177},[3089,17709,17711,17714,17717,17719,17721,17724],{"class":3091,"line":17710},58,[3089,17712,17713],{"class":3177},"                                \u003C",[3089,17715,17716],{"class":3181},"RowDefinition",[3089,17718,6752],{"class":3185},[3089,17720,3189],{"class":3099},[3089,17722,17723],{"class":3192},"\"Auto\"",[3089,17725,3292],{"class":3177},[3089,17727,17729,17731,17733,17735,17737,17739],{"class":3091,"line":17728},59,[3089,17730,17713],{"class":3177},[3089,17732,17716],{"class":3181},[3089,17734,6752],{"class":3185},[3089,17736,3189],{"class":3099},[3089,17738,12653],{"class":3192},[3089,17740,3292],{"class":3177},[3089,17742,17744,17746,17748,17750,17752,17754],{"class":3091,"line":17743},60,[3089,17745,17713],{"class":3177},[3089,17747,17716],{"class":3181},[3089,17749,6752],{"class":3185},[3089,17751,3189],{"class":3099},[3089,17753,17723],{"class":3192},[3089,17755,3292],{"class":3177},[3089,17757,17759,17762,17764],{"class":3091,"line":17758},61,[3089,17760,17761],{"class":3177},"                            \u003C/",[3089,17763,17705],{"class":3181},[3089,17765,3240],{"class":3177},[3089,17767,17769],{"class":3091,"line":17768},62,[3089,17770,17771],{"class":3099},"                            \n",[3089,17773,17775,17777,17779,17781,17783,17785],{"class":3091,"line":17774},63,[3089,17776,17702],{"class":3177},[3089,17778,3583],{"class":3181},[3089,17780,3586],{"class":3185},[3089,17782,3189],{"class":3099},[3089,17784,11547],{"class":3192},[3089,17786,3526],{"class":3099},[3089,17788,17790,17793,17795],{"class":3091,"line":17789},64,[3089,17791,17792],{"class":3185},"                                       FontSize",[3089,17794,3189],{"class":3099},[3089,17796,17797],{"class":3192},"\"14\"\n",[3089,17799,17801,17804,17806,17808],{"class":3091,"line":17800},65,[3089,17802,17803],{"class":3185},"                                       Foreground",[3089,17805,3189],{"class":3099},[3089,17807,16132],{"class":3192},[3089,17809,3292],{"class":3177},[3089,17811,17813],{"class":3091,"line":17812},66,[3089,17814,17771],{"class":3099},[3089,17816,17818,17820,17822,17825,17827,17829],{"class":3091,"line":17817},67,[3089,17819,17702],{"class":3177},[3089,17821,3583],{"class":3181},[3089,17823,17824],{"class":3185}," Grid.Row",[3089,17826,3189],{"class":3099},[3089,17828,3898],{"class":3192},[3089,17830,3526],{"class":3099},[3089,17832,17834,17837,17839,17842],{"class":3091,"line":17833},68,[3089,17835,17836],{"class":3185},"                                       Text",[3089,17838,3189],{"class":3099},[3089,17840,17841],{"class":3192},"\"1,234\"",[3089,17843,3526],{"class":3099},[3089,17845,17847,17849,17851],{"class":3091,"line":17846},69,[3089,17848,17792],{"class":3185},[3089,17850,3189],{"class":3099},[3089,17852,17853],{"class":3192},"\"36\"\n",[3089,17855,17857,17860,17862],{"class":3091,"line":17856},70,[3089,17858,17859],{"class":3185},"                                       FontWeight",[3089,17861,3189],{"class":3099},[3089,17863,3615],{"class":3192},[3089,17865,17867,17870,17872,17874],{"class":3091,"line":17866},71,[3089,17868,17869],{"class":3185},"                                       VerticalAlignment",[3089,17871,3189],{"class":3099},[3089,17873,6397],{"class":3192},[3089,17875,3292],{"class":3177},[3089,17877,17879],{"class":3091,"line":17878},72,[3089,17880,17771],{"class":3099},[3089,17882,17884,17886,17888,17890,17892,17894,17896,17898,17900],{"class":3091,"line":17883},73,[3089,17885,17702],{"class":3177},[3089,17887,3574],{"class":3181},[3089,17889,17824],{"class":3185},[3089,17891,3189],{"class":3099},[3089,17893,15813],{"class":3192},[3089,17895,6384],{"class":3185},[3089,17897,3189],{"class":3099},[3089,17899,6389],{"class":3192},[3089,17901,3240],{"class":3177},[3089,17903,17905,17907,17909,17911,17913,17916],{"class":3091,"line":17904},74,[3089,17906,17713],{"class":3177},[3089,17908,6719],{"class":3181},[3089,17910,6722],{"class":3185},[3089,17912,3189],{"class":3099},[3089,17914,17915],{"class":3192},"\"{StaticResource UpGeometry}\"",[3089,17917,3526],{"class":3099},[3089,17919,17921,17924,17926,17928],{"class":3091,"line":17920},75,[3089,17922,17923],{"class":3185},"                                      Fill",[3089,17925,3189],{"class":3099},[3089,17927,16640],{"class":3192},[3089,17929,3526],{"class":3099},[3089,17931,17933,17936,17938,17940,17942,17944],{"class":3091,"line":17932},76,[3089,17934,17935],{"class":3185},"                                      Width",[3089,17937,3189],{"class":3099},[3089,17939,3943],{"class":3192},[3089,17941,6752],{"class":3185},[3089,17943,3189],{"class":3099},[3089,17945,14484],{"class":3192},[3089,17947,17949,17952,17954,17956],{"class":3091,"line":17948},77,[3089,17950,17951],{"class":3185},"                                      Margin",[3089,17953,3189],{"class":3099},[3089,17955,13247],{"class":3192},[3089,17957,3292],{"class":3177},[3089,17959,17961,17963,17965,17967,17969,17972],{"class":3091,"line":17960},78,[3089,17962,17713],{"class":3177},[3089,17964,3583],{"class":3181},[3089,17966,3586],{"class":3185},[3089,17968,3189],{"class":3099},[3089,17970,17971],{"class":3192},"\"+12% від минулого місяця\"",[3089,17973,3526],{"class":3099},[3089,17975,17977,17980,17982],{"class":3091,"line":17976},79,[3089,17978,17979],{"class":3185},"                                           FontSize",[3089,17981,3189],{"class":3099},[3089,17983,14484],{"class":3192},[3089,17985,17987,17990,17992,17994],{"class":3091,"line":17986},80,[3089,17988,17989],{"class":3185},"                                           Foreground",[3089,17991,3189],{"class":3099},[3089,17993,16640],{"class":3192},[3089,17995,3292],{"class":3177},[3089,17997,17999,18001,18003],{"class":3091,"line":17998},81,[3089,18000,17761],{"class":3177},[3089,18002,3574],{"class":3181},[3089,18004,3240],{"class":3177},[3089,18006,18008,18011,18013],{"class":3091,"line":18007},82,[3089,18009,18010],{"class":3177},"                        \u003C/",[3089,18012,3557],{"class":3181},[3089,18014,3240],{"class":3177},[3089,18016,18018,18020,18022],{"class":3091,"line":18017},83,[3089,18019,12469],{"class":3177},[3089,18021,9871],{"class":3181},[3089,18023,3240],{"class":3177},[3089,18025,18027],{"class":3091,"line":18026},84,[3089,18028,18029],{"class":3099},"                    \n",[3089,18031,18033],{"class":3091,"line":18032},85,[3089,18034,18035],{"class":3279},"                    \u003C!-- Картка 2: Дохід -->\n",[3089,18037,18039,18041,18043,18045,18047,18049],{"class":3091,"line":18038},86,[3089,18040,9005],{"class":3177},[3089,18042,9871],{"class":3181},[3089,18044,9874],{"class":3185},[3089,18046,3189],{"class":3099},[3089,18048,9879],{"class":3192},[3089,18050,3526],{"class":3099},[3089,18052,18054,18056,18058,18060],{"class":3091,"line":18053},87,[3089,18055,17659],{"class":3185},[3089,18057,3189],{"class":3099},[3089,18059,17187],{"class":3192},[3089,18061,3526],{"class":3099},[3089,18063,18065,18067,18069],{"class":3091,"line":18064},88,[3089,18066,17671],{"class":3185},[3089,18068,3189],{"class":3099},[3089,18070,13331],{"class":3192},[3089,18072,18074,18076,18078,18080],{"class":3091,"line":18073},89,[3089,18075,17681],{"class":3185},[3089,18077,3189],{"class":3099},[3089,18079,3565],{"class":3192},[3089,18081,3240],{"class":3177},[3089,18083,18085,18087,18089],{"class":3091,"line":18084},90,[3089,18086,12453],{"class":3177},[3089,18088,3557],{"class":3181},[3089,18090,3240],{"class":3177},[3089,18092,18094,18096,18098],{"class":3091,"line":18093},91,[3089,18095,17702],{"class":3177},[3089,18097,17705],{"class":3181},[3089,18099,3240],{"class":3177},[3089,18101,18103,18105,18107,18109,18111,18113],{"class":3091,"line":18102},92,[3089,18104,17713],{"class":3177},[3089,18106,17716],{"class":3181},[3089,18108,6752],{"class":3185},[3089,18110,3189],{"class":3099},[3089,18112,17723],{"class":3192},[3089,18114,3292],{"class":3177},[3089,18116,18118,18120,18122,18124,18126,18128],{"class":3091,"line":18117},93,[3089,18119,17713],{"class":3177},[3089,18121,17716],{"class":3181},[3089,18123,6752],{"class":3185},[3089,18125,3189],{"class":3099},[3089,18127,12653],{"class":3192},[3089,18129,3292],{"class":3177},[3089,18131,18133,18135,18137,18139,18141,18143],{"class":3091,"line":18132},94,[3089,18134,17713],{"class":3177},[3089,18136,17716],{"class":3181},[3089,18138,6752],{"class":3185},[3089,18140,3189],{"class":3099},[3089,18142,17723],{"class":3192},[3089,18144,3292],{"class":3177},[3089,18146,18148,18150,18152],{"class":3091,"line":18147},95,[3089,18149,17761],{"class":3177},[3089,18151,17705],{"class":3181},[3089,18153,3240],{"class":3177},[3089,18155,18157],{"class":3091,"line":18156},96,[3089,18158,17771],{"class":3099},[3089,18160,18162,18164,18166,18168,18170,18173],{"class":3091,"line":18161},97,[3089,18163,17702],{"class":3177},[3089,18165,3583],{"class":3181},[3089,18167,3586],{"class":3185},[3089,18169,3189],{"class":3099},[3089,18171,18172],{"class":3192},"\"Дохід\"",[3089,18174,3526],{"class":3099},[3089,18176,18178,18180,18182],{"class":3091,"line":18177},98,[3089,18179,17792],{"class":3185},[3089,18181,3189],{"class":3099},[3089,18183,17797],{"class":3192},[3089,18185,18187,18189,18191,18193],{"class":3091,"line":18186},99,[3089,18188,17803],{"class":3185},[3089,18190,3189],{"class":3099},[3089,18192,16132],{"class":3192},[3089,18194,3292],{"class":3177},[3089,18196,18198],{"class":3091,"line":18197},100,[3089,18199,17771],{"class":3099},[3089,18201,18203,18205,18207,18209,18211,18213],{"class":3091,"line":18202},101,[3089,18204,17702],{"class":3177},[3089,18206,3583],{"class":3181},[3089,18208,17824],{"class":3185},[3089,18210,3189],{"class":3099},[3089,18212,3898],{"class":3192},[3089,18214,3526],{"class":3099},[3089,18216,18218,18220,18222,18225],{"class":3091,"line":18217},102,[3089,18219,17836],{"class":3185},[3089,18221,3189],{"class":3099},[3089,18223,18224],{"class":3192},"\"$45,678\"",[3089,18226,3526],{"class":3099},[3089,18228,18230,18232,18234],{"class":3091,"line":18229},103,[3089,18231,17792],{"class":3185},[3089,18233,3189],{"class":3099},[3089,18235,17853],{"class":3192},[3089,18237,18239,18241,18243],{"class":3091,"line":18238},104,[3089,18240,17859],{"class":3185},[3089,18242,3189],{"class":3099},[3089,18244,3615],{"class":3192},[3089,18246,18248,18250,18252,18254],{"class":3091,"line":18247},105,[3089,18249,17869],{"class":3185},[3089,18251,3189],{"class":3099},[3089,18253,6397],{"class":3192},[3089,18255,3292],{"class":3177},[3089,18257,18259],{"class":3091,"line":18258},106,[3089,18260,17771],{"class":3099},[3089,18262,18264,18266,18268,18270,18272,18274,18276,18278,18280],{"class":3091,"line":18263},107,[3089,18265,17702],{"class":3177},[3089,18267,3574],{"class":3181},[3089,18269,17824],{"class":3185},[3089,18271,3189],{"class":3099},[3089,18273,15813],{"class":3192},[3089,18275,6384],{"class":3185},[3089,18277,3189],{"class":3099},[3089,18279,6389],{"class":3192},[3089,18281,3240],{"class":3177},[3089,18283,18285,18287,18289,18291,18293,18295],{"class":3091,"line":18284},108,[3089,18286,17713],{"class":3177},[3089,18288,6719],{"class":3181},[3089,18290,6722],{"class":3185},[3089,18292,3189],{"class":3099},[3089,18294,17915],{"class":3192},[3089,18296,3526],{"class":3099},[3089,18298,18300,18302,18304,18306],{"class":3091,"line":18299},109,[3089,18301,17923],{"class":3185},[3089,18303,3189],{"class":3099},[3089,18305,16640],{"class":3192},[3089,18307,3526],{"class":3099},[3089,18309,18311,18313,18315,18317,18319,18321],{"class":3091,"line":18310},110,[3089,18312,17935],{"class":3185},[3089,18314,3189],{"class":3099},[3089,18316,3943],{"class":3192},[3089,18318,6752],{"class":3185},[3089,18320,3189],{"class":3099},[3089,18322,14484],{"class":3192},[3089,18324,18326,18328,18330,18332],{"class":3091,"line":18325},111,[3089,18327,17951],{"class":3185},[3089,18329,3189],{"class":3099},[3089,18331,13247],{"class":3192},[3089,18333,3292],{"class":3177},[3089,18335,18337,18339,18341,18343,18345,18348],{"class":3091,"line":18336},112,[3089,18338,17713],{"class":3177},[3089,18340,3583],{"class":3181},[3089,18342,3586],{"class":3185},[3089,18344,3189],{"class":3099},[3089,18346,18347],{"class":3192},"\"+8% від минулого місяця\"",[3089,18349,3526],{"class":3099},[3089,18351,18353,18355,18357],{"class":3091,"line":18352},113,[3089,18354,17979],{"class":3185},[3089,18356,3189],{"class":3099},[3089,18358,14484],{"class":3192},[3089,18360,18362,18364,18366,18368],{"class":3091,"line":18361},114,[3089,18363,17989],{"class":3185},[3089,18365,3189],{"class":3099},[3089,18367,16640],{"class":3192},[3089,18369,3292],{"class":3177},[3089,18371,18373,18375,18377],{"class":3091,"line":18372},115,[3089,18374,17761],{"class":3177},[3089,18376,3574],{"class":3181},[3089,18378,3240],{"class":3177},[3089,18380,18382,18384,18386],{"class":3091,"line":18381},116,[3089,18383,18010],{"class":3177},[3089,18385,3557],{"class":3181},[3089,18387,3240],{"class":3177},[3089,18389,18391,18393,18395],{"class":3091,"line":18390},117,[3089,18392,12469],{"class":3177},[3089,18394,9871],{"class":3181},[3089,18396,3240],{"class":3177},[3089,18398,18400],{"class":3091,"line":18399},118,[3089,18401,18029],{"class":3099},[3089,18403,18405],{"class":3091,"line":18404},119,[3089,18406,18407],{"class":3279},"                    \u003C!-- Картка 3: Замовлення -->\n",[3089,18409,18411,18413,18415,18417,18419,18421],{"class":3091,"line":18410},120,[3089,18412,9005],{"class":3177},[3089,18414,9871],{"class":3181},[3089,18416,9874],{"class":3185},[3089,18418,3189],{"class":3099},[3089,18420,9879],{"class":3192},[3089,18422,3526],{"class":3099},[3089,18424,18426,18428,18430,18432],{"class":3091,"line":18425},121,[3089,18427,17659],{"class":3185},[3089,18429,3189],{"class":3099},[3089,18431,17187],{"class":3192},[3089,18433,3526],{"class":3099},[3089,18435,18437,18439,18441],{"class":3091,"line":18436},122,[3089,18438,17671],{"class":3185},[3089,18440,3189],{"class":3099},[3089,18442,13331],{"class":3192},[3089,18444,18446,18448,18450,18452],{"class":3091,"line":18445},123,[3089,18447,17681],{"class":3185},[3089,18449,3189],{"class":3099},[3089,18451,3565],{"class":3192},[3089,18453,3240],{"class":3177},[3089,18455,18457,18459,18461],{"class":3091,"line":18456},124,[3089,18458,12453],{"class":3177},[3089,18460,3557],{"class":3181},[3089,18462,3240],{"class":3177},[3089,18464,18466,18468,18470],{"class":3091,"line":18465},125,[3089,18467,17702],{"class":3177},[3089,18469,17705],{"class":3181},[3089,18471,3240],{"class":3177},[3089,18473,18475,18477,18479,18481,18483,18485],{"class":3091,"line":18474},126,[3089,18476,17713],{"class":3177},[3089,18478,17716],{"class":3181},[3089,18480,6752],{"class":3185},[3089,18482,3189],{"class":3099},[3089,18484,17723],{"class":3192},[3089,18486,3292],{"class":3177},[3089,18488,18490,18492,18494,18496,18498,18500],{"class":3091,"line":18489},127,[3089,18491,17713],{"class":3177},[3089,18493,17716],{"class":3181},[3089,18495,6752],{"class":3185},[3089,18497,3189],{"class":3099},[3089,18499,12653],{"class":3192},[3089,18501,3292],{"class":3177},[3089,18503,18505,18507,18509,18511,18513,18515],{"class":3091,"line":18504},128,[3089,18506,17713],{"class":3177},[3089,18508,17716],{"class":3181},[3089,18510,6752],{"class":3185},[3089,18512,3189],{"class":3099},[3089,18514,17723],{"class":3192},[3089,18516,3292],{"class":3177},[3089,18518,18520,18522,18524],{"class":3091,"line":18519},129,[3089,18521,17761],{"class":3177},[3089,18523,17705],{"class":3181},[3089,18525,3240],{"class":3177},[3089,18527,18529],{"class":3091,"line":18528},130,[3089,18530,17771],{"class":3099},[3089,18532,18534,18536,18538,18540,18542,18545],{"class":3091,"line":18533},131,[3089,18535,17702],{"class":3177},[3089,18537,3583],{"class":3181},[3089,18539,3586],{"class":3185},[3089,18541,3189],{"class":3099},[3089,18543,18544],{"class":3192},"\"Замовлення\"",[3089,18546,3526],{"class":3099},[3089,18548,18550,18552,18554],{"class":3091,"line":18549},132,[3089,18551,17792],{"class":3185},[3089,18553,3189],{"class":3099},[3089,18555,17797],{"class":3192},[3089,18557,18559,18561,18563,18565],{"class":3091,"line":18558},133,[3089,18560,17803],{"class":3185},[3089,18562,3189],{"class":3099},[3089,18564,16132],{"class":3192},[3089,18566,3292],{"class":3177},[3089,18568,18570],{"class":3091,"line":18569},134,[3089,18571,17771],{"class":3099},[3089,18573,18575,18577,18579,18581,18583,18585],{"class":3091,"line":18574},135,[3089,18576,17702],{"class":3177},[3089,18578,3583],{"class":3181},[3089,18580,17824],{"class":3185},[3089,18582,3189],{"class":3099},[3089,18584,3898],{"class":3192},[3089,18586,3526],{"class":3099},[3089,18588,18590,18592,18594,18597],{"class":3091,"line":18589},136,[3089,18591,17836],{"class":3185},[3089,18593,3189],{"class":3099},[3089,18595,18596],{"class":3192},"\"567\"",[3089,18598,3526],{"class":3099},[3089,18600,18602,18604,18606],{"class":3091,"line":18601},137,[3089,18603,17792],{"class":3185},[3089,18605,3189],{"class":3099},[3089,18607,17853],{"class":3192},[3089,18609,18611,18613,18615],{"class":3091,"line":18610},138,[3089,18612,17859],{"class":3185},[3089,18614,3189],{"class":3099},[3089,18616,3615],{"class":3192},[3089,18618,18620,18622,18624,18626],{"class":3091,"line":18619},139,[3089,18621,17869],{"class":3185},[3089,18623,3189],{"class":3099},[3089,18625,6397],{"class":3192},[3089,18627,3292],{"class":3177},[3089,18629,18631],{"class":3091,"line":18630},140,[3089,18632,17771],{"class":3099},[3089,18634,18636,18638,18640,18642,18644,18646,18648,18650,18652],{"class":3091,"line":18635},141,[3089,18637,17702],{"class":3177},[3089,18639,3574],{"class":3181},[3089,18641,17824],{"class":3185},[3089,18643,3189],{"class":3099},[3089,18645,15813],{"class":3192},[3089,18647,6384],{"class":3185},[3089,18649,3189],{"class":3099},[3089,18651,6389],{"class":3192},[3089,18653,3240],{"class":3177},[3089,18655,18657,18659,18661,18663,18665,18668],{"class":3091,"line":18656},142,[3089,18658,17713],{"class":3177},[3089,18660,6719],{"class":3181},[3089,18662,6722],{"class":3185},[3089,18664,3189],{"class":3099},[3089,18666,18667],{"class":3192},"\"{StaticResource DownGeometry}\"",[3089,18669,3526],{"class":3099},[3089,18671,18673,18675,18677,18680],{"class":3091,"line":18672},143,[3089,18674,17923],{"class":3185},[3089,18676,3189],{"class":3099},[3089,18678,18679],{"class":3192},"\"Red\"",[3089,18681,3526],{"class":3099},[3089,18683,18685,18687,18689,18691,18693,18695],{"class":3091,"line":18684},144,[3089,18686,17935],{"class":3185},[3089,18688,3189],{"class":3099},[3089,18690,3943],{"class":3192},[3089,18692,6752],{"class":3185},[3089,18694,3189],{"class":3099},[3089,18696,14484],{"class":3192},[3089,18698,18700,18702,18704,18706],{"class":3091,"line":18699},145,[3089,18701,17951],{"class":3185},[3089,18703,3189],{"class":3099},[3089,18705,13247],{"class":3192},[3089,18707,3292],{"class":3177},[3089,18709,18711,18713,18715,18717,18719,18722],{"class":3091,"line":18710},146,[3089,18712,17713],{"class":3177},[3089,18714,3583],{"class":3181},[3089,18716,3586],{"class":3185},[3089,18718,3189],{"class":3099},[3089,18720,18721],{"class":3192},"\"-3% від минулого місяця\"",[3089,18723,3526],{"class":3099},[3089,18725,18727,18729,18731],{"class":3091,"line":18726},147,[3089,18728,17979],{"class":3185},[3089,18730,3189],{"class":3099},[3089,18732,14484],{"class":3192},[3089,18734,18736,18738,18740,18742],{"class":3091,"line":18735},148,[3089,18737,17989],{"class":3185},[3089,18739,3189],{"class":3099},[3089,18741,18679],{"class":3192},[3089,18743,3292],{"class":3177},[3089,18745,18747,18749,18751],{"class":3091,"line":18746},149,[3089,18748,17761],{"class":3177},[3089,18750,3574],{"class":3181},[3089,18752,3240],{"class":3177},[3089,18754,18756,18758,18760],{"class":3091,"line":18755},150,[3089,18757,18010],{"class":3177},[3089,18759,3557],{"class":3181},[3089,18761,3240],{"class":3177},[3089,18763,18765,18767,18769],{"class":3091,"line":18764},151,[3089,18766,12469],{"class":3177},[3089,18768,9871],{"class":3181},[3089,18770,3240],{"class":3177},[3089,18772,18774,18776,18778],{"class":3091,"line":18773},152,[3089,18775,9047],{"class":3177},[3089,18777,9238],{"class":3181},[3089,18779,3240],{"class":3177},[3089,18781,18783],{"class":3091,"line":18782},153,[3089,18784,17321],{"class":3099},[3089,18786,18788],{"class":3091,"line":18787},154,[3089,18789,18790],{"class":3279},"                \u003C!-- Графік активності -->\n",[3089,18792,18794,18796,18798,18800,18802,18804],{"class":3091,"line":18793},155,[3089,18795,3286],{"class":3177},[3089,18797,9871],{"class":3181},[3089,18799,9874],{"class":3185},[3089,18801,3189],{"class":3099},[3089,18803,9879],{"class":3192},[3089,18805,3526],{"class":3099},[3089,18807,18809,18812,18814],{"class":3091,"line":18808},156,[3089,18810,18811],{"class":3185},"                         Padding",[3089,18813,3189],{"class":3099},[3089,18815,9891],{"class":3192},[3089,18817,18819,18822,18824,18826],{"class":3091,"line":18818},157,[3089,18820,18821],{"class":3185},"                         Margin",[3089,18823,3189],{"class":3099},[3089,18825,3625],{"class":3192},[3089,18827,3240],{"class":3177},[3089,18829,18831,18833,18835],{"class":3091,"line":18830},158,[3089,18832,9005],{"class":3177},[3089,18834,3574],{"class":3181},[3089,18836,3240],{"class":3177},[3089,18838,18840,18842,18844,18846,18848,18851],{"class":3091,"line":18839},159,[3089,18841,12453],{"class":3177},[3089,18843,3583],{"class":3181},[3089,18845,3586],{"class":3185},[3089,18847,3189],{"class":3099},[3089,18849,18850],{"class":3192},"\"Активність користувачів\"",[3089,18852,3526],{"class":3099},[3089,18854,18856,18859,18861,18863],{"class":3091,"line":18855},160,[3089,18857,18858],{"class":3185},"                                   FontSize",[3089,18860,3189],{"class":3099},[3089,18862,9934],{"class":3192},[3089,18864,3526],{"class":3099},[3089,18866,18868,18871,18873],{"class":3091,"line":18867},161,[3089,18869,18870],{"class":3185},"                                   FontWeight",[3089,18872,3189],{"class":3099},[3089,18874,3615],{"class":3192},[3089,18876,18878,18881,18883,18885],{"class":3091,"line":18877},162,[3089,18879,18880],{"class":3185},"                                   Margin",[3089,18882,3189],{"class":3099},[3089,18884,3625],{"class":3192},[3089,18886,3292],{"class":3177},[3089,18888,18890],{"class":3091,"line":18889},163,[3089,18891,18892],{"class":3099},"                        \n",[3089,18894,18896],{"class":3091,"line":18895},164,[3089,18897,18898],{"class":3279},"                        \u003C!-- Тут можна інтегрувати LiveCharts або інший графік -->\n",[3089,18900,18902,18904,18906,18908,18910,18912],{"class":3091,"line":18901},165,[3089,18903,12453],{"class":3177},[3089,18905,3882],{"class":3181},[3089,18907,6752],{"class":3185},[3089,18909,3189],{"class":3099},[3089,18911,10539],{"class":3192},[3089,18913,3526],{"class":3099},[3089,18915,18917,18920,18922],{"class":3091,"line":18916},166,[3089,18918,18919],{"class":3185},"                                Background",[3089,18921,3189],{"class":3099},[3089,18923,17244],{"class":3192},[3089,18925,18927,18930,18932,18934],{"class":3091,"line":18926},167,[3089,18928,18929],{"class":3185},"                                CornerRadius",[3089,18931,3189],{"class":3099},[3089,18933,14954],{"class":3192},[3089,18935,3240],{"class":3177},[3089,18937,18939,18941,18943,18945,18947,18950],{"class":3091,"line":18938},168,[3089,18940,17702],{"class":3177},[3089,18942,3583],{"class":3181},[3089,18944,3586],{"class":3185},[3089,18946,3189],{"class":3099},[3089,18948,18949],{"class":3192},"\"[Графік активності]\"",[3089,18951,3526],{"class":3099},[3089,18953,18955,18958,18960,18962],{"class":3091,"line":18954},169,[3089,18956,18957],{"class":3185},"                                       HorizontalAlignment",[3089,18959,3189],{"class":3099},[3089,18961,6397],{"class":3192},[3089,18963,3526],{"class":3099},[3089,18965,18967,18969,18971],{"class":3091,"line":18966},170,[3089,18968,17869],{"class":3185},[3089,18970,3189],{"class":3099},[3089,18972,18973],{"class":3192},"\"Center\"\n",[3089,18975,18977,18979,18981,18983],{"class":3091,"line":18976},171,[3089,18978,17803],{"class":3185},[3089,18980,3189],{"class":3099},[3089,18982,16132],{"class":3192},[3089,18984,3292],{"class":3177},[3089,18986,18988,18990,18992],{"class":3091,"line":18987},172,[3089,18989,18010],{"class":3177},[3089,18991,3882],{"class":3181},[3089,18993,3240],{"class":3177},[3089,18995,18997,18999,19001],{"class":3091,"line":18996},173,[3089,18998,12469],{"class":3177},[3089,19000,3574],{"class":3181},[3089,19002,3240],{"class":3177},[3089,19004,19006,19008,19010],{"class":3091,"line":19005},174,[3089,19007,9047],{"class":3177},[3089,19009,9871],{"class":3181},[3089,19011,3240],{"class":3177},[3089,19013,19015],{"class":3091,"line":19014},175,[3089,19016,17321],{"class":3099},[3089,19018,19020],{"class":3091,"line":19019},176,[3089,19021,19022],{"class":3279},"                \u003C!-- Останні транзакції -->\n",[3089,19024,19026,19028,19030,19032,19034,19036],{"class":3091,"line":19025},177,[3089,19027,3286],{"class":3177},[3089,19029,9871],{"class":3181},[3089,19031,9874],{"class":3185},[3089,19033,3189],{"class":3099},[3089,19035,9879],{"class":3192},[3089,19037,3526],{"class":3099},[3089,19039,19041,19043,19045,19047],{"class":3091,"line":19040},178,[3089,19042,18811],{"class":3185},[3089,19044,3189],{"class":3099},[3089,19046,3565],{"class":3192},[3089,19048,3240],{"class":3177},[3089,19050,19052,19054,19056],{"class":3091,"line":19051},179,[3089,19053,9005],{"class":3177},[3089,19055,3574],{"class":3181},[3089,19057,3240],{"class":3177},[3089,19059,19061,19063,19065,19067,19069,19072],{"class":3091,"line":19060},180,[3089,19062,12453],{"class":3177},[3089,19064,3583],{"class":3181},[3089,19066,3586],{"class":3185},[3089,19068,3189],{"class":3099},[3089,19070,19071],{"class":3192},"\"Останні транзакції\"",[3089,19073,3526],{"class":3099},[3089,19075,19077,19079,19081,19083],{"class":3091,"line":19076},181,[3089,19078,18858],{"class":3185},[3089,19080,3189],{"class":3099},[3089,19082,9934],{"class":3192},[3089,19084,3526],{"class":3099},[3089,19086,19088,19090,19092],{"class":3091,"line":19087},182,[3089,19089,18870],{"class":3185},[3089,19091,3189],{"class":3099},[3089,19093,3615],{"class":3192},[3089,19095,19097,19099,19101,19103],{"class":3091,"line":19096},183,[3089,19098,18880],{"class":3185},[3089,19100,3189],{"class":3099},[3089,19102,3625],{"class":3192},[3089,19104,3292],{"class":3177},[3089,19106,19108],{"class":3091,"line":19107},184,[3089,19109,18892],{"class":3099},[3089,19111,19113,19115,19117,19119,19121],{"class":3091,"line":19112},185,[3089,19114,12453],{"class":3177},[3089,19116,12539],{"class":3181},[3089,19118,12542],{"class":3185},[3089,19120,3189],{"class":3099},[3089,19122,19123],{"class":3192},"\"{Binding RecentTransactions}\"\n",[3089,19125,19127,19130,19132],{"class":3091,"line":19126},186,[3089,19128,19129],{"class":3185},"                                     AutoGenerateColumns",[3089,19131,3189],{"class":3099},[3089,19133,10418],{"class":3192},[3089,19135,19137,19140,19142],{"class":3091,"line":19136},187,[3089,19138,19139],{"class":3185},"                                     CanUserAddRows",[3089,19141,3189],{"class":3099},[3089,19143,10418],{"class":3192},[3089,19145,19147,19150,19152],{"class":3091,"line":19146},188,[3089,19148,19149],{"class":3185},"                                     HeadersVisibility",[3089,19151,3189],{"class":3099},[3089,19153,12575],{"class":3192},[3089,19155,19157,19160,19162,19164],{"class":3091,"line":19156},189,[3089,19158,19159],{"class":3185},"                                     Height",[3089,19161,3189],{"class":3099},[3089,19163,10539],{"class":3192},[3089,19165,3240],{"class":3177},[3089,19167,19169,19171,19173],{"class":3091,"line":19168},190,[3089,19170,17702],{"class":3177},[3089,19172,12594],{"class":3181},[3089,19174,3240],{"class":3177},[3089,19176,19178,19180,19182,19184,19186,19188,19190,19192,19194,19196,19198,19200],{"class":3091,"line":19177},191,[3089,19179,17713],{"class":3177},[3089,19181,12603],{"class":3181},[3089,19183,10281],{"class":3185},[3089,19185,3189],{"class":3099},[3089,19187,12610],{"class":3192},[3089,19189,12613],{"class":3185},[3089,19191,3189],{"class":3099},[3089,19193,12618],{"class":3192},[3089,19195,8880],{"class":3185},[3089,19197,3189],{"class":3099},[3089,19199,12625],{"class":3192},[3089,19201,3292],{"class":3177},[3089,19203,19205,19207,19209,19211,19213,19216,19218,19220,19223,19225,19227,19229],{"class":3091,"line":19204},192,[3089,19206,17713],{"class":3177},[3089,19208,12603],{"class":3181},[3089,19210,10281],{"class":3185},[3089,19212,3189],{"class":3099},[3089,19214,19215],{"class":3192},"\"Користувач\"",[3089,19217,12613],{"class":3185},[3089,19219,3189],{"class":3099},[3089,19221,19222],{"class":3192},"\"{Binding UserName}\"",[3089,19224,8880],{"class":3185},[3089,19226,3189],{"class":3099},[3089,19228,12653],{"class":3192},[3089,19230,3292],{"class":3177},[3089,19232,19234,19236,19238,19240,19242,19245,19247,19249,19252,19254,19256,19258],{"class":3091,"line":19233},193,[3089,19235,17713],{"class":3177},[3089,19237,12603],{"class":3181},[3089,19239,10281],{"class":3185},[3089,19241,3189],{"class":3099},[3089,19243,19244],{"class":3192},"\"Сума\"",[3089,19246,12613],{"class":3185},[3089,19248,3189],{"class":3099},[3089,19250,19251],{"class":3192},"\"{Binding Amount, StringFormat=C}\"",[3089,19253,8880],{"class":3185},[3089,19255,3189],{"class":3099},[3089,19257,9460],{"class":3192},[3089,19259,3292],{"class":3177},[3089,19261,19263,19265,19267,19269,19271,19274,19276,19278,19281,19283,19285,19287],{"class":3091,"line":19262},194,[3089,19264,17713],{"class":3177},[3089,19266,12603],{"class":3181},[3089,19268,10281],{"class":3185},[3089,19270,3189],{"class":3099},[3089,19272,19273],{"class":3192},"\"Дата\"",[3089,19275,12613],{"class":3185},[3089,19277,3189],{"class":3099},[3089,19279,19280],{"class":3192},"\"{Binding Date, StringFormat='dd.MM.yyyy'}\"",[3089,19282,8880],{"class":3185},[3089,19284,3189],{"class":3099},[3089,19286,9460],{"class":3192},[3089,19288,3292],{"class":3177},[3089,19290,19292,19294,19296,19298,19300,19303,19305,19307,19309],{"class":3091,"line":19291},195,[3089,19293,17713],{"class":3177},[3089,19295,12717],{"class":3181},[3089,19297,10281],{"class":3185},[3089,19299,3189],{"class":3099},[3089,19301,19302],{"class":3192},"\"Статус\"",[3089,19304,8880],{"class":3185},[3089,19306,3189],{"class":3099},[3089,19308,9460],{"class":3192},[3089,19310,3240],{"class":3177},[3089,19312,19314,19317,19319],{"class":3091,"line":19313},196,[3089,19315,19316],{"class":3177},"                                    \u003C",[3089,19318,12739],{"class":3181},[3089,19320,3240],{"class":3177},[3089,19322,19324,19327,19329],{"class":3091,"line":19323},197,[3089,19325,19326],{"class":3177},"                                        \u003C",[3089,19328,12748],{"class":3181},[3089,19330,3240],{"class":3177},[3089,19332,19334,19337,19339,19341,19343,19346],{"class":3091,"line":19333},198,[3089,19335,19336],{"class":3177},"                                            \u003C",[3089,19338,13748],{"class":3181},[3089,19340,3729],{"class":3185},[3089,19342,3189],{"class":3099},[3089,19344,19345],{"class":3192},"\"{Binding Status}\"",[3089,19347,3526],{"class":3099},[3089,19349,19351,19354,19356,19359],{"class":3091,"line":19350},199,[3089,19352,19353],{"class":3185},"                                                    Style",[3089,19355,3189],{"class":3099},[3089,19357,19358],{"class":3192},"\"{StaticResource TagSuccess}\"",[3089,19360,3292],{"class":3177},[3089,19362,19364,19367,19369],{"class":3091,"line":19363},200,[3089,19365,19366],{"class":3177},"                                        \u003C/",[3089,19368,12748],{"class":3181},[3089,19370,3240],{"class":3177},[3089,19372,19374,19377,19379],{"class":3091,"line":19373},201,[3089,19375,19376],{"class":3177},"                                    \u003C/",[3089,19378,12739],{"class":3181},[3089,19380,3240],{"class":3177},[3089,19382,19384,19387,19389],{"class":3091,"line":19383},202,[3089,19385,19386],{"class":3177},"                                \u003C/",[3089,19388,12717],{"class":3181},[3089,19390,3240],{"class":3177},[3089,19392,19394,19396,19398],{"class":3091,"line":19393},203,[3089,19395,17761],{"class":3177},[3089,19397,12594],{"class":3181},[3089,19399,3240],{"class":3177},[3089,19401,19403,19405,19407],{"class":3091,"line":19402},204,[3089,19404,18010],{"class":3177},[3089,19406,12539],{"class":3181},[3089,19408,3240],{"class":3177},[3089,19410,19412,19414,19416],{"class":3091,"line":19411},205,[3089,19413,12469],{"class":3177},[3089,19415,3574],{"class":3181},[3089,19417,3240],{"class":3177},[3089,19419,19421,19423,19425],{"class":3091,"line":19420},206,[3089,19422,9047],{"class":3177},[3089,19424,9871],{"class":3181},[3089,19426,3240],{"class":3177},[3089,19428,19430,19432,19434],{"class":3091,"line":19429},207,[3089,19431,3314],{"class":3177},[3089,19433,3574],{"class":3181},[3089,19435,3240],{"class":3177},[3089,19437,19439,19441,19443],{"class":3091,"line":19438},208,[3089,19440,3324],{"class":3177},[3089,19442,10591],{"class":3181},[3089,19444,3240],{"class":3177},[3089,19446,19448,19450,19452],{"class":3091,"line":19447},209,[3089,19449,3334],{"class":3177},[3089,19451,3557],{"class":3181},[3089,19453,3240],{"class":3177},[3089,19455,19457,19459,19461],{"class":3091,"line":19456},210,[3089,19458,3344],{"class":3177},[3089,19460,3479],{"class":3181},[3089,19462,3240],{"class":3177},[2964,19464,19465,3165],{},[2983,19466,19467],{},"MainViewModel.cs",[3079,19469,19471],{"className":4236,"code":19470,"language":4238,"meta":3084,"style":3084},"public class MainViewModel : INotifyPropertyChanged\n{\n    public ObservableCollection\u003CTransaction> RecentTransactions { get; set; }\n    \n    public MainViewModel()\n    {\n        LoadData();\n    }\n    \n    private void LoadData()\n    {\n        RecentTransactions = new ObservableCollection\u003CTransaction>\n        {\n            new Transaction { Id = 1, UserName = \"Іван Петренко\", Amount = 1250.00m, Date = DateTime.Now.AddDays(-1), Status = \"Завершено\" },\n            new Transaction { Id = 2, UserName = \"Марія Коваленко\", Amount = 890.50m, Date = DateTime.Now.AddDays(-2), Status = \"Завершено\" },\n            new Transaction { Id = 3, UserName = \"Олег Сидоренко\", Amount = 2100.00m, Date = DateTime.Now.AddDays(-3), Status = \"В обробці\" },\n            // Більше транзакцій...\n        };\n    }\n    \n    public event PropertyChangedEventHandler PropertyChanged;\n}\n\npublic class Transaction\n{\n    public int Id { get; set; }\n    public string UserName { get; set; }\n    public decimal Amount { get; set; }\n    public DateTime Date { get; set; }\n    public string Status { get; set; }\n}\n",[3086,19472,19473,19486,19490,19516,19520,19528,19532,19539,19543,19547,19558,19562,19579,19583,19659,19722,19786,19791,19796,19800,19804,19819,19823,19827,19836,19840,19859,19877,19897,19917,19936],{"__ignoreMap":3084},[3089,19474,19475,19477,19479,19481,19483],{"class":3091,"line":3092},[3089,19476,4269],{"class":4268},[3089,19478,4275],{"class":4268},[3089,19480,7882],{"class":4249},[3089,19482,4281],{"class":3099},[3089,19484,19485],{"class":4249},"INotifyPropertyChanged\n",[3089,19487,19488],{"class":3091,"line":3196},[3089,19489,4289],{"class":3099},[3089,19491,19492,19494,19496,19498,19501,19503,19506,19508,19510,19512,19514],{"class":3091,"line":3207},[3089,19493,8043],{"class":4268},[3089,19495,7846],{"class":4249},[3089,19497,3178],{"class":3099},[3089,19499,19500],{"class":4249},"Transaction",[3089,19502,7741],{"class":3099},[3089,19504,19505],{"class":4312},"RecentTransactions",[3089,19507,7859],{"class":3099},[3089,19509,7862],{"class":4268},[3089,19511,7865],{"class":3099},[3089,19513,7868],{"class":4268},[3089,19515,7871],{"class":3099},[3089,19517,19518],{"class":3091,"line":3218},[3089,19519,5024],{"class":3099},[3089,19521,19522,19524,19526],{"class":3091,"line":3229},[3089,19523,8043],{"class":4268},[3089,19525,7882],{"class":3095},[3089,19527,6962],{"class":3099},[3089,19529,19530],{"class":3091,"line":3243},[3089,19531,4321],{"class":3099},[3089,19533,19534,19537],{"class":3091,"line":3254},[3089,19535,19536],{"class":3095},"        LoadData",[3089,19538,5728],{"class":3099},[3089,19540,19541],{"class":3091,"line":3265},[3089,19542,4389],{"class":3099},[3089,19544,19545],{"class":3091,"line":3276},[3089,19546,5024],{"class":3099},[3089,19548,19549,19551,19553,19556],{"class":3091,"line":3283},[3089,19550,8030],{"class":4268},[3089,19552,4300],{"class":4268},[3089,19554,19555],{"class":3095}," LoadData",[3089,19557,6962],{"class":3099},[3089,19559,19560],{"class":3091,"line":3295},[3089,19561,4321],{"class":3099},[3089,19563,19564,19567,19569,19571,19573,19575,19577],{"class":3091,"line":3301},[3089,19565,19566],{"class":4312},"        RecentTransactions",[3089,19568,4488],{"class":3099},[3089,19570,7898],{"class":4268},[3089,19572,7846],{"class":4249},[3089,19574,3178],{"class":3099},[3089,19576,19500],{"class":4249},[3089,19578,3240],{"class":3099},[3089,19580,19581],{"class":3091,"line":3311},[3089,19582,5556],{"class":3099},[3089,19584,19585,19588,19591,19593,19596,19598,19601,19603,19606,19608,19611,19613,19616,19618,19621,19623,19626,19628,19631,19633,19636,19638,19641,19644,19646,19649,19652,19654,19657],{"class":3091,"line":3321},[3089,19586,19587],{"class":4268},"            new",[3089,19589,19590],{"class":4249}," Transaction",[3089,19592,7859],{"class":3099},[3089,19594,19595],{"class":4312},"Id",[3089,19597,4488],{"class":3099},[3089,19599,19600],{"class":4844},"1",[3089,19602,4789],{"class":3099},[3089,19604,19605],{"class":4312},"UserName",[3089,19607,4488],{"class":3099},[3089,19609,19610],{"class":3118},"\"Іван Петренко\"",[3089,19612,4789],{"class":3099},[3089,19614,19615],{"class":4312},"Amount",[3089,19617,4488],{"class":3099},[3089,19619,19620],{"class":4844},"1250.00m",[3089,19622,4789],{"class":3099},[3089,19624,19625],{"class":4312},"Date",[3089,19627,4488],{"class":3099},[3089,19629,19630],{"class":4312},"DateTime",[3089,19632,3454],{"class":3099},[3089,19634,19635],{"class":4312},"Now",[3089,19637,3454],{"class":3099},[3089,19639,19640],{"class":3095},"AddDays",[3089,19642,19643],{"class":3099},"(-",[3089,19645,19600],{"class":4844},[3089,19647,19648],{"class":3099},"), ",[3089,19650,19651],{"class":4312},"Status",[3089,19653,4488],{"class":3099},[3089,19655,19656],{"class":3118},"\"Завершено\"",[3089,19658,7931],{"class":3099},[3089,19660,19661,19663,19665,19667,19669,19671,19674,19676,19678,19680,19683,19685,19687,19689,19692,19694,19696,19698,19700,19702,19704,19706,19708,19710,19712,19714,19716,19718,19720],{"class":3091,"line":3331},[3089,19662,19587],{"class":4268},[3089,19664,19590],{"class":4249},[3089,19666,7859],{"class":3099},[3089,19668,19595],{"class":4312},[3089,19670,4488],{"class":3099},[3089,19672,19673],{"class":4844},"2",[3089,19675,4789],{"class":3099},[3089,19677,19605],{"class":4312},[3089,19679,4488],{"class":3099},[3089,19681,19682],{"class":3118},"\"Марія Коваленко\"",[3089,19684,4789],{"class":3099},[3089,19686,19615],{"class":4312},[3089,19688,4488],{"class":3099},[3089,19690,19691],{"class":4844},"890.50m",[3089,19693,4789],{"class":3099},[3089,19695,19625],{"class":4312},[3089,19697,4488],{"class":3099},[3089,19699,19630],{"class":4312},[3089,19701,3454],{"class":3099},[3089,19703,19635],{"class":4312},[3089,19705,3454],{"class":3099},[3089,19707,19640],{"class":3095},[3089,19709,19643],{"class":3099},[3089,19711,19673],{"class":4844},[3089,19713,19648],{"class":3099},[3089,19715,19651],{"class":4312},[3089,19717,4488],{"class":3099},[3089,19719,19656],{"class":3118},[3089,19721,7931],{"class":3099},[3089,19723,19724,19726,19728,19730,19732,19734,19737,19739,19741,19743,19746,19748,19750,19752,19755,19757,19759,19761,19763,19765,19767,19769,19771,19773,19775,19777,19779,19781,19784],{"class":3091,"line":3341},[3089,19725,19587],{"class":4268},[3089,19727,19590],{"class":4249},[3089,19729,7859],{"class":3099},[3089,19731,19595],{"class":4312},[3089,19733,4488],{"class":3099},[3089,19735,19736],{"class":4844},"3",[3089,19738,4789],{"class":3099},[3089,19740,19605],{"class":4312},[3089,19742,4488],{"class":3099},[3089,19744,19745],{"class":3118},"\"Олег Сидоренко\"",[3089,19747,4789],{"class":3099},[3089,19749,19615],{"class":4312},[3089,19751,4488],{"class":3099},[3089,19753,19754],{"class":4844},"2100.00m",[3089,19756,4789],{"class":3099},[3089,19758,19625],{"class":4312},[3089,19760,4488],{"class":3099},[3089,19762,19630],{"class":4312},[3089,19764,3454],{"class":3099},[3089,19766,19635],{"class":4312},[3089,19768,3454],{"class":3099},[3089,19770,19640],{"class":3095},[3089,19772,19643],{"class":3099},[3089,19774,19736],{"class":4844},[3089,19776,19648],{"class":3099},[3089,19778,19651],{"class":4312},[3089,19780,4488],{"class":3099},[3089,19782,19783],{"class":3118},"\"В обробці\"",[3089,19785,7931],{"class":3099},[3089,19787,19788],{"class":3091,"line":3660},[3089,19789,19790],{"class":3279},"            // Більше транзакцій...\n",[3089,19792,19793],{"class":3091,"line":3673},[3089,19794,19795],{"class":3099},"        };\n",[3089,19797,19798],{"class":3091,"line":3678},[3089,19799,4389],{"class":3099},[3089,19801,19802],{"class":3091,"line":3693},[3089,19803,5024],{"class":3099},[3089,19805,19806,19808,19811,19814,19817],{"class":3091,"line":3704},[3089,19807,8043],{"class":4268},[3089,19809,19810],{"class":4268}," event",[3089,19812,19813],{"class":4249}," PropertyChangedEventHandler",[3089,19815,19816],{"class":4312}," PropertyChanged",[3089,19818,4257],{"class":3099},[3089,19820,19821],{"class":3091,"line":3716},[3089,19822,4394],{"class":3099},[3089,19824,19825],{"class":3091,"line":3721},[3089,19826,4263],{"emptyLinePlaceholder":4262},[3089,19828,19829,19831,19833],{"class":3091,"line":3739},[3089,19830,4269],{"class":4268},[3089,19832,4275],{"class":4268},[3089,19834,19835],{"class":4249}," Transaction\n",[3089,19837,19838],{"class":3091,"line":3750},[3089,19839,4289],{"class":3099},[3089,19841,19842,19844,19847,19849,19851,19853,19855,19857],{"class":3091,"line":3763},[3089,19843,8043],{"class":4268},[3089,19845,19846],{"class":4268}," int",[3089,19848,14850],{"class":4312},[3089,19850,7859],{"class":3099},[3089,19852,7862],{"class":4268},[3089,19854,7865],{"class":3099},[3089,19856,7868],{"class":4268},[3089,19858,7871],{"class":3099},[3089,19860,19861,19863,19865,19867,19869,19871,19873,19875],{"class":3091,"line":3772},[3089,19862,8043],{"class":4268},[3089,19864,8033],{"class":4268},[3089,19866,13414],{"class":4312},[3089,19868,7859],{"class":3099},[3089,19870,7862],{"class":4268},[3089,19872,7865],{"class":3099},[3089,19874,7868],{"class":4268},[3089,19876,7871],{"class":3099},[3089,19878,19879,19881,19884,19887,19889,19891,19893,19895],{"class":3091,"line":3781},[3089,19880,8043],{"class":4268},[3089,19882,19883],{"class":4268}," decimal",[3089,19885,19886],{"class":4312}," Amount",[3089,19888,7859],{"class":3099},[3089,19890,7862],{"class":4268},[3089,19892,7865],{"class":3099},[3089,19894,7868],{"class":4268},[3089,19896,7871],{"class":3099},[3089,19898,19899,19901,19904,19907,19909,19911,19913,19915],{"class":3091,"line":4190},[3089,19900,8043],{"class":4268},[3089,19902,19903],{"class":4249}," DateTime",[3089,19905,19906],{"class":4312}," Date",[3089,19908,7859],{"class":3099},[3089,19910,7862],{"class":4268},[3089,19912,7865],{"class":3099},[3089,19914,7868],{"class":4268},[3089,19916,7871],{"class":3099},[3089,19918,19919,19921,19923,19926,19928,19930,19932,19934],{"class":3091,"line":5750},[3089,19920,8043],{"class":4268},[3089,19922,8033],{"class":4268},[3089,19924,19925],{"class":4312}," Status",[3089,19927,7859],{"class":3099},[3089,19929,7862],{"class":4268},[3089,19931,7865],{"class":3099},[3089,19933,7868],{"class":4268},[3089,19935,7871],{"class":3099},[3089,19937,19938],{"class":3091,"line":5755},[3089,19939,4394],{"class":3099},[3000,19941,19943],{"id":19942},"приклад-2-chat-додаток","Приклад 2: Chat додаток",[2964,19945,19946],{},"Створимо простий chat додаток з використанням ChatBubble та інших контролів HandyControl.",[2964,19948,19949,3165],{},[2983,19950,19951],{},"ChatWindow.xaml",[3079,19953,19955],{"className":3168,"code":19954,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"ChatApp.ChatWindow\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n           Title=\"Chat\" \n           Height=\"600\" \n           Width=\"800\">\n    \u003CGrid>\n        \u003CGrid.RowDefinitions>\n            \u003CRowDefinition Height=\"Auto\"/>\n            \u003CRowDefinition Height=\"*\"/>\n            \u003CRowDefinition Height=\"Auto\"/>\n        \u003C/Grid.RowDefinitions>\n        \n        \u003C!-- Header -->\n        \u003CBorder Grid.Row=\"0\" \n                Background=\"{DynamicResource PrimaryBrush}\"\n                Padding=\"20,15\">\n            \u003CStackPanel Orientation=\"Horizontal\">\n                \u003Chc:Gravatar Id=\"user@example.com\" \n                             Width=\"40\" \n                             Height=\"40\"\n                             CornerRadius=\"20\"\n                             Margin=\"0,0,15,0\"/>\n                \u003CStackPanel VerticalAlignment=\"Center\">\n                    \u003CTextBlock Text=\"Іван Петренко\" \n                               Foreground=\"White\" \n                               FontSize=\"16\"\n                               FontWeight=\"Bold\"/>\n                    \u003CTextBlock Text=\"Онлайн\" \n                               Foreground=\"White\" \n                               FontSize=\"12\"\n                               Opacity=\"0.8\"/>\n                \u003C/StackPanel>\n            \u003C/StackPanel>\n        \u003C/Border>\n        \n        \u003C!-- Messages area -->\n        \u003Chc:ScrollViewer Grid.Row=\"1\" \n                         Name=\"MessagesScrollViewer\"\n                         Padding=\"20\"\n                         Background=\"{DynamicResource RegionBrush}\">\n            \u003CItemsControl ItemsSource=\"{Binding Messages}\">\n                \u003CItemsControl.ItemTemplate>\n                    \u003CDataTemplate>\n                        \u003CGrid Margin=\"0,0,0,15\">\n                            \u003CGrid.ColumnDefinitions>\n                                \u003CColumnDefinition Width=\"*\"/>\n                                \u003CColumnDefinition Width=\"Auto\"/>\n                                \u003CColumnDefinition Width=\"*\"/>\n                            \u003C/Grid.ColumnDefinitions>\n                            \n                            \u003C!-- Повідомлення від отримувача (ліворуч) -->\n                            \u003CStackPanel Grid.Column=\"0\" \n                                        Visibility=\"{Binding IsReceived, Converter={StaticResource Boolean2VisibilityConverter}}\">\n                                \u003CBorder Background=\"White\" \n                                        Padding=\"15,10\"\n                                        CornerRadius=\"10,10,10,0\"\n                                        MaxWidth=\"400\"\n                                        HorizontalAlignment=\"Left\"\n                                        Effect=\"{StaticResource EffectShadow1}\">\n                                    \u003CTextBlock Text=\"{Binding Text}\" \n                                               TextWrapping=\"Wrap\"/>\n                                \u003C/Border>\n                                \u003CTextBlock Text=\"{Binding Time, StringFormat='HH:mm'}\" \n                                           FontSize=\"11\"\n                                           Foreground=\"{DynamicResource ThirdlyTextBrush}\"\n                                           Margin=\"10,5,0,0\"/>\n                            \u003C/StackPanel>\n                            \n                            \u003C!-- Повідомлення від відправника (праворуч) -->\n                            \u003CStackPanel Grid.Column=\"2\" \n                                        Visibility=\"{Binding IsSent, Converter={StaticResource Boolean2VisibilityConverter}}\">\n                                \u003CBorder Background=\"{DynamicResource PrimaryBrush}\" \n                                        Padding=\"15,10\"\n                                        CornerRadius=\"10,10,0,10\"\n                                        MaxWidth=\"400\"\n                                        HorizontalAlignment=\"Right\"\n                                        Effect=\"{StaticResource EffectShadow1}\">\n                                    \u003CTextBlock Text=\"{Binding Text}\" \n                                               Foreground=\"White\"\n                                               TextWrapping=\"Wrap\"/>\n                                \u003C/Border>\n                                \u003CTextBlock Text=\"{Binding Time, StringFormat='HH:mm'}\" \n                                           FontSize=\"11\"\n                                           Foreground=\"{DynamicResource ThirdlyTextBrush}\"\n                                           Margin=\"0,5,10,0\"\n                                           HorizontalAlignment=\"Right\"/>\n                            \u003C/StackPanel>\n                        \u003C/Grid>\n                    \u003C/DataTemplate>\n                \u003C/ItemsControl.ItemTemplate>\n            \u003C/ItemsControl>\n        \u003C/hc:ScrollViewer>\n        \n        \u003C!-- Input area -->\n        \u003CBorder Grid.Row=\"2\" \n                Background=\"{DynamicResource RegionBrush}\"\n                BorderThickness=\"0,1,0,0\"\n                BorderBrush=\"{DynamicResource BorderBrush}\"\n                Padding=\"20,15\">\n            \u003CGrid>\n                \u003CGrid.ColumnDefinitions>\n                    \u003CColumnDefinition Width=\"*\"/>\n                    \u003CColumnDefinition Width=\"Auto\"/>\n                \u003C/Grid.ColumnDefinitions>\n                \n                \u003Chc:TextBox Grid.Column=\"0\" \n                            Name=\"MessageTextBox\"\n                            hc:InfoElement.Placeholder=\"Введіть повідомлення...\"\n                            AcceptsReturn=\"False\"\n                            MaxHeight=\"100\"\n                            VerticalScrollBarVisibility=\"Auto\"\n                            KeyDown=\"MessageTextBox_KeyDown\"/>\n                \n                \u003Chc:Button Grid.Column=\"1\" \n                           Content=\"Надіслати\" \n                           Style=\"{StaticResource ButtonPrimary}\"\n                           Margin=\"10,0,0,0\"\n                           Padding=\"20,8\"\n                           Command=\"{Binding SendMessageCommand}\"/>\n            \u003C/Grid>\n        \u003C/Border>\n    \u003C/Grid>\n\u003C/hc:Window>\n",[3086,19956,19957,19970,19978,19989,20000,20010,20018,20026,20040,20054,20068,20076,20080,20085,20099,20107,20118,20132,20147,20157,20166,20175,20186,20200,20214,20224,20232,20242,20257,20267,20275,20287,20295,20303,20311,20315,20320,20334,20344,20352,20363,20378,20386,20394,20409,20417,20431,20445,20459,20467,20471,20476,20490,20502,20516,20526,20536,20545,20554,20566,20581,20592,20600,20615,20624,20632,20644,20652,20656,20661,20675,20686,20700,20708,20717,20725,20734,20744,20758,20767,20777,20785,20799,20807,20815,20824,20836,20844,20852,20860,20868,20876,20884,20888,20893,20907,20915,20924,20933,20943,20951,20959,20973,20987,20995,20999,21013,21023,21032,21041,21050,21060,21072,21076,21090,21102,21111,21120,21129,21141,21149,21157,21165],{"__ignoreMap":3084},[3089,19958,19959,19961,19963,19965,19967],{"class":3091,"line":3092},[3089,19960,3178],{"class":3177},[3089,19962,3479],{"class":3181},[3089,19964,3186],{"class":3185},[3089,19966,3189],{"class":3099},[3089,19968,19969],{"class":3192},"\"ChatApp.ChatWindow\"\n",[3089,19971,19972,19974,19976],{"class":3091,"line":3196},[3089,19973,3509],{"class":3185},[3089,19975,3189],{"class":3099},[3089,19977,3226],{"class":3192},[3089,19979,19980,19982,19984,19987],{"class":3091,"line":3207},[3089,19981,3518],{"class":3185},[3089,19983,3189],{"class":3099},[3089,19985,19986],{"class":3192},"\"Chat\"",[3089,19988,3526],{"class":3099},[3089,19990,19991,19993,19995,19998],{"class":3091,"line":3218},[3089,19992,3531],{"class":3185},[3089,19994,3189],{"class":3099},[3089,19996,19997],{"class":3192},"\"600\"",[3089,19999,3526],{"class":3099},[3089,20001,20002,20004,20006,20008],{"class":3091,"line":3229},[3089,20003,3543],{"class":3185},[3089,20005,3189],{"class":3099},[3089,20007,3548],{"class":3192},[3089,20009,3240],{"class":3177},[3089,20011,20012,20014,20016],{"class":3091,"line":3243},[3089,20013,3246],{"class":3177},[3089,20015,3557],{"class":3181},[3089,20017,3240],{"class":3177},[3089,20019,20020,20022,20024],{"class":3091,"line":3254},[3089,20021,3257],{"class":3177},[3089,20023,17705],{"class":3181},[3089,20025,3240],{"class":3177},[3089,20027,20028,20030,20032,20034,20036,20038],{"class":3091,"line":3265},[3089,20029,3268],{"class":3177},[3089,20031,17716],{"class":3181},[3089,20033,6752],{"class":3185},[3089,20035,3189],{"class":3099},[3089,20037,17723],{"class":3192},[3089,20039,3292],{"class":3177},[3089,20041,20042,20044,20046,20048,20050,20052],{"class":3091,"line":3276},[3089,20043,3268],{"class":3177},[3089,20045,17716],{"class":3181},[3089,20047,6752],{"class":3185},[3089,20049,3189],{"class":3099},[3089,20051,12653],{"class":3192},[3089,20053,3292],{"class":3177},[3089,20055,20056,20058,20060,20062,20064,20066],{"class":3091,"line":3283},[3089,20057,3268],{"class":3177},[3089,20059,17716],{"class":3181},[3089,20061,6752],{"class":3185},[3089,20063,3189],{"class":3099},[3089,20065,17723],{"class":3192},[3089,20067,3292],{"class":3177},[3089,20069,20070,20072,20074],{"class":3091,"line":3295},[3089,20071,3324],{"class":3177},[3089,20073,17705],{"class":3181},[3089,20075,3240],{"class":3177},[3089,20077,20078],{"class":3091,"line":3301},[3089,20079,3875],{"class":3099},[3089,20081,20082],{"class":3091,"line":3311},[3089,20083,20084],{"class":3279},"        \u003C!-- Header -->\n",[3089,20086,20087,20089,20091,20093,20095,20097],{"class":3091,"line":3321},[3089,20088,3257],{"class":3177},[3089,20090,3882],{"class":3181},[3089,20092,17824],{"class":3185},[3089,20094,3189],{"class":3099},[3089,20096,3981],{"class":3192},[3089,20098,3526],{"class":3099},[3089,20100,20101,20103,20105],{"class":3091,"line":3331},[3089,20102,4131],{"class":3185},[3089,20104,3189],{"class":3099},[3089,20106,13222],{"class":3192},[3089,20108,20109,20111,20113,20116],{"class":3091,"line":3341},[3089,20110,4153],{"class":3185},[3089,20112,3189],{"class":3099},[3089,20114,20115],{"class":3192},"\"20,15\"",[3089,20117,3240],{"class":3177},[3089,20119,20120,20122,20124,20126,20128,20130],{"class":3091,"line":3660},[3089,20121,3268],{"class":3177},[3089,20123,3574],{"class":3181},[3089,20125,6384],{"class":3185},[3089,20127,3189],{"class":3099},[3089,20129,6389],{"class":3192},[3089,20131,3240],{"class":3177},[3089,20133,20134,20136,20138,20140,20142,20145],{"class":3091,"line":3673},[3089,20135,3286],{"class":3177},[3089,20137,14847],{"class":3181},[3089,20139,14850],{"class":3185},[3089,20141,3189],{"class":3099},[3089,20143,20144],{"class":3192},"\"user@example.com\"",[3089,20146,3526],{"class":3099},[3089,20148,20149,20151,20153,20155],{"class":3091,"line":3678},[3089,20150,17659],{"class":3185},[3089,20152,3189],{"class":3099},[3089,20154,14888],{"class":3192},[3089,20156,3526],{"class":3099},[3089,20158,20159,20161,20163],{"class":3091,"line":3693},[3089,20160,17671],{"class":3185},[3089,20162,3189],{"class":3099},[3089,20164,20165],{"class":3192},"\"40\"\n",[3089,20167,20168,20171,20173],{"class":3091,"line":3704},[3089,20169,20170],{"class":3185},"                             CornerRadius",[3089,20172,3189],{"class":3099},[3089,20174,9891],{"class":3192},[3089,20176,20177,20179,20181,20184],{"class":3091,"line":3716},[3089,20178,17350],{"class":3185},[3089,20180,3189],{"class":3099},[3089,20182,20183],{"class":3192},"\"0,0,15,0\"",[3089,20185,3292],{"class":3177},[3089,20187,20188,20190,20192,20194,20196,20198],{"class":3091,"line":3721},[3089,20189,3286],{"class":3177},[3089,20191,3574],{"class":3181},[3089,20193,6400],{"class":3185},[3089,20195,3189],{"class":3099},[3089,20197,6397],{"class":3192},[3089,20199,3240],{"class":3177},[3089,20201,20202,20204,20206,20208,20210,20212],{"class":3091,"line":3739},[3089,20203,9005],{"class":3177},[3089,20205,3583],{"class":3181},[3089,20207,3586],{"class":3185},[3089,20209,3189],{"class":3099},[3089,20211,19610],{"class":3192},[3089,20213,3526],{"class":3099},[3089,20215,20216,20218,20220,20222],{"class":3091,"line":3750},[3089,20217,13065],{"class":3185},[3089,20219,3189],{"class":3099},[3089,20221,3815],{"class":3192},[3089,20223,3526],{"class":3099},[3089,20225,20226,20228,20230],{"class":3091,"line":3763},[3089,20227,13038],{"class":3185},[3089,20229,3189],{"class":3099},[3089,20231,13237],{"class":3192},[3089,20233,20234,20236,20238,20240],{"class":3091,"line":3772},[3089,20235,13027],{"class":3185},[3089,20237,3189],{"class":3099},[3089,20239,9102],{"class":3192},[3089,20241,3292],{"class":3177},[3089,20243,20244,20246,20248,20250,20252,20255],{"class":3091,"line":3781},[3089,20245,9005],{"class":3177},[3089,20247,3583],{"class":3181},[3089,20249,3586],{"class":3185},[3089,20251,3189],{"class":3099},[3089,20253,20254],{"class":3192},"\"Онлайн\"",[3089,20256,3526],{"class":3099},[3089,20258,20259,20261,20263,20265],{"class":3091,"line":4190},[3089,20260,13065],{"class":3185},[3089,20262,3189],{"class":3099},[3089,20264,3815],{"class":3192},[3089,20266,3526],{"class":3099},[3089,20268,20269,20271,20273],{"class":3091,"line":5750},[3089,20270,13038],{"class":3185},[3089,20272,3189],{"class":3099},[3089,20274,14484],{"class":3192},[3089,20276,20277,20280,20282,20285],{"class":3091,"line":5755},[3089,20278,20279],{"class":3185},"                               Opacity",[3089,20281,3189],{"class":3099},[3089,20283,20284],{"class":3192},"\"0.8\"",[3089,20286,3292],{"class":3177},[3089,20288,20289,20291,20293],{"class":3091,"line":17433},[3089,20290,9047],{"class":3177},[3089,20292,3574],{"class":3181},[3089,20294,3240],{"class":3177},[3089,20296,20297,20299,20301],{"class":3091,"line":17444},[3089,20298,3314],{"class":3177},[3089,20300,3574],{"class":3181},[3089,20302,3240],{"class":3177},[3089,20304,20305,20307,20309],{"class":3091,"line":17459},[3089,20306,3324],{"class":3177},[3089,20308,3882],{"class":3181},[3089,20310,3240],{"class":3177},[3089,20312,20313],{"class":3091,"line":17470},[3089,20314,3875],{"class":3099},[3089,20316,20317],{"class":3091,"line":17479},[3089,20318,20319],{"class":3279},"        \u003C!-- Messages area -->\n",[3089,20321,20322,20324,20326,20328,20330,20332],{"class":3091,"line":17488},[3089,20323,3257],{"class":3177},[3089,20325,10532],{"class":3181},[3089,20327,17824],{"class":3185},[3089,20329,3189],{"class":3099},[3089,20331,3898],{"class":3192},[3089,20333,3526],{"class":3099},[3089,20335,20336,20339,20341],{"class":3091,"line":17497},[3089,20337,20338],{"class":3185},"                         Name",[3089,20340,3189],{"class":3099},[3089,20342,20343],{"class":3192},"\"MessagesScrollViewer\"\n",[3089,20345,20346,20348,20350],{"class":3091,"line":17502},[3089,20347,18811],{"class":3185},[3089,20349,3189],{"class":3099},[3089,20351,9891],{"class":3192},[3089,20353,20354,20357,20359,20361],{"class":3091,"line":17508},[3089,20355,20356],{"class":3185},"                         Background",[3089,20358,3189],{"class":3099},[3089,20360,12085],{"class":3192},[3089,20362,3240],{"class":3177},[3089,20364,20365,20367,20369,20371,20373,20376],{"class":3091,"line":17523},[3089,20366,3268],{"class":3177},[3089,20368,13794],{"class":3181},[3089,20370,12542],{"class":3185},[3089,20372,3189],{"class":3099},[3089,20374,20375],{"class":3192},"\"{Binding Messages}\"",[3089,20377,3240],{"class":3177},[3089,20379,20380,20382,20384],{"class":3091,"line":17538},[3089,20381,3286],{"class":3177},[3089,20383,13864],{"class":3181},[3089,20385,3240],{"class":3177},[3089,20387,20388,20390,20392],{"class":3091,"line":17554},[3089,20389,9005],{"class":3177},[3089,20391,12748],{"class":3181},[3089,20393,3240],{"class":3177},[3089,20395,20396,20398,20400,20402,20404,20407],{"class":3091,"line":17566},[3089,20397,12453],{"class":3177},[3089,20399,3557],{"class":3181},[3089,20401,3560],{"class":3185},[3089,20403,3189],{"class":3099},[3089,20405,20406],{"class":3192},"\"0,0,0,15\"",[3089,20408,3240],{"class":3177},[3089,20410,20411,20413,20415],{"class":3091,"line":17575},[3089,20412,17702],{"class":3177},[3089,20414,17171],{"class":3181},[3089,20416,3240],{"class":3177},[3089,20418,20419,20421,20423,20425,20427,20429],{"class":3091,"line":17586},[3089,20420,17713],{"class":3177},[3089,20422,17180],{"class":3181},[3089,20424,8880],{"class":3185},[3089,20426,3189],{"class":3099},[3089,20428,12653],{"class":3192},[3089,20430,3292],{"class":3177},[3089,20432,20433,20435,20437,20439,20441,20443],{"class":3091,"line":17591},[3089,20434,17713],{"class":3177},[3089,20436,17180],{"class":3181},[3089,20438,8880],{"class":3185},[3089,20440,3189],{"class":3099},[3089,20442,17723],{"class":3192},[3089,20444,3292],{"class":3177},[3089,20446,20447,20449,20451,20453,20455,20457],{"class":3091,"line":17597},[3089,20448,17713],{"class":3177},[3089,20450,17180],{"class":3181},[3089,20452,8880],{"class":3185},[3089,20454,3189],{"class":3099},[3089,20456,12653],{"class":3192},[3089,20458,3292],{"class":3177},[3089,20460,20461,20463,20465],{"class":3091,"line":17612},[3089,20462,17761],{"class":3177},[3089,20464,17171],{"class":3181},[3089,20466,3240],{"class":3177},[3089,20468,20469],{"class":3091,"line":17622},[3089,20470,17771],{"class":3099},[3089,20472,20473],{"class":3091,"line":17635},[3089,20474,20475],{"class":3279},"                            \u003C!-- Повідомлення від отримувача (ліворуч) -->\n",[3089,20477,20478,20480,20482,20484,20486,20488],{"class":3091,"line":17641},[3089,20479,17702],{"class":3177},[3089,20481,3574],{"class":3181},[3089,20483,17229],{"class":3185},[3089,20485,3189],{"class":3099},[3089,20487,3981],{"class":3192},[3089,20489,3526],{"class":3099},[3089,20491,20492,20495,20497,20500],{"class":3091,"line":17656},[3089,20493,20494],{"class":3185},"                                        Visibility",[3089,20496,3189],{"class":3099},[3089,20498,20499],{"class":3192},"\"{Binding IsReceived, Converter={StaticResource Boolean2VisibilityConverter}}\"",[3089,20501,3240],{"class":3177},[3089,20503,20504,20506,20508,20510,20512,20514],{"class":3091,"line":17668},[3089,20505,17713],{"class":3177},[3089,20507,3882],{"class":3181},[3089,20509,3810],{"class":3185},[3089,20511,3189],{"class":3099},[3089,20513,3815],{"class":3192},[3089,20515,3526],{"class":3099},[3089,20517,20518,20521,20523],{"class":3091,"line":17678},[3089,20519,20520],{"class":3185},"                                        Padding",[3089,20522,3189],{"class":3099},[3089,20524,20525],{"class":3192},"\"15,10\"\n",[3089,20527,20528,20531,20533],{"class":3091,"line":17690},[3089,20529,20530],{"class":3185},"                                        CornerRadius",[3089,20532,3189],{"class":3099},[3089,20534,20535],{"class":3192},"\"10,10,10,0\"\n",[3089,20537,20538,20541,20543],{"class":3091,"line":17699},[3089,20539,20540],{"class":3185},"                                        MaxWidth",[3089,20542,3189],{"class":3099},[3089,20544,10900],{"class":3192},[3089,20546,20547,20550,20552],{"class":3091,"line":17710},[3089,20548,20549],{"class":3185},"                                        HorizontalAlignment",[3089,20551,3189],{"class":3099},[3089,20553,12060],{"class":3192},[3089,20555,20556,20559,20561,20564],{"class":3091,"line":17728},[3089,20557,20558],{"class":3185},"                                        Effect",[3089,20560,3189],{"class":3099},[3089,20562,20563],{"class":3192},"\"{StaticResource EffectShadow1}\"",[3089,20565,3240],{"class":3177},[3089,20567,20568,20570,20572,20574,20576,20579],{"class":3091,"line":17743},[3089,20569,19316],{"class":3177},[3089,20571,3583],{"class":3181},[3089,20573,3586],{"class":3185},[3089,20575,3189],{"class":3099},[3089,20577,20578],{"class":3192},"\"{Binding Text}\"",[3089,20580,3526],{"class":3099},[3089,20582,20583,20586,20588,20590],{"class":3091,"line":17758},[3089,20584,20585],{"class":3185},"                                               TextWrapping",[3089,20587,3189],{"class":3099},[3089,20589,14518],{"class":3192},[3089,20591,3292],{"class":3177},[3089,20593,20594,20596,20598],{"class":3091,"line":17768},[3089,20595,19386],{"class":3177},[3089,20597,3882],{"class":3181},[3089,20599,3240],{"class":3177},[3089,20601,20602,20604,20606,20608,20610,20613],{"class":3091,"line":17774},[3089,20603,17713],{"class":3177},[3089,20605,3583],{"class":3181},[3089,20607,3586],{"class":3185},[3089,20609,3189],{"class":3099},[3089,20611,20612],{"class":3192},"\"{Binding Time, StringFormat='HH:mm'}\"",[3089,20614,3526],{"class":3099},[3089,20616,20617,20619,20621],{"class":3091,"line":17789},[3089,20618,17979],{"class":3185},[3089,20620,3189],{"class":3099},[3089,20622,20623],{"class":3192},"\"11\"\n",[3089,20625,20626,20628,20630],{"class":3091,"line":17800},[3089,20627,17989],{"class":3185},[3089,20629,3189],{"class":3099},[3089,20631,13070],{"class":3192},[3089,20633,20634,20637,20639,20642],{"class":3091,"line":17812},[3089,20635,20636],{"class":3185},"                                           Margin",[3089,20638,3189],{"class":3099},[3089,20640,20641],{"class":3192},"\"10,5,0,0\"",[3089,20643,3292],{"class":3177},[3089,20645,20646,20648,20650],{"class":3091,"line":17817},[3089,20647,17761],{"class":3177},[3089,20649,3574],{"class":3181},[3089,20651,3240],{"class":3177},[3089,20653,20654],{"class":3091,"line":17833},[3089,20655,17771],{"class":3099},[3089,20657,20658],{"class":3091,"line":17846},[3089,20659,20660],{"class":3279},"                            \u003C!-- Повідомлення від відправника (праворуч) -->\n",[3089,20662,20663,20665,20667,20669,20671,20673],{"class":3091,"line":17856},[3089,20664,17702],{"class":3177},[3089,20666,3574],{"class":3181},[3089,20668,17229],{"class":3185},[3089,20670,3189],{"class":3099},[3089,20672,15813],{"class":3192},[3089,20674,3526],{"class":3099},[3089,20676,20677,20679,20681,20684],{"class":3091,"line":17866},[3089,20678,20494],{"class":3185},[3089,20680,3189],{"class":3099},[3089,20682,20683],{"class":3192},"\"{Binding IsSent, Converter={StaticResource Boolean2VisibilityConverter}}\"",[3089,20685,3240],{"class":3177},[3089,20687,20688,20690,20692,20694,20696,20698],{"class":3091,"line":17878},[3089,20689,17713],{"class":3177},[3089,20691,3882],{"class":3181},[3089,20693,3810],{"class":3185},[3089,20695,3189],{"class":3099},[3089,20697,15090],{"class":3192},[3089,20699,3526],{"class":3099},[3089,20701,20702,20704,20706],{"class":3091,"line":17883},[3089,20703,20520],{"class":3185},[3089,20705,3189],{"class":3099},[3089,20707,20525],{"class":3192},[3089,20709,20710,20712,20714],{"class":3091,"line":17904},[3089,20711,20530],{"class":3185},[3089,20713,3189],{"class":3099},[3089,20715,20716],{"class":3192},"\"10,10,0,10\"\n",[3089,20718,20719,20721,20723],{"class":3091,"line":17920},[3089,20720,20540],{"class":3185},[3089,20722,3189],{"class":3099},[3089,20724,10900],{"class":3192},[3089,20726,20727,20729,20731],{"class":3091,"line":17932},[3089,20728,20549],{"class":3185},[3089,20730,3189],{"class":3099},[3089,20732,20733],{"class":3192},"\"Right\"\n",[3089,20735,20736,20738,20740,20742],{"class":3091,"line":17948},[3089,20737,20558],{"class":3185},[3089,20739,3189],{"class":3099},[3089,20741,20563],{"class":3192},[3089,20743,3240],{"class":3177},[3089,20745,20746,20748,20750,20752,20754,20756],{"class":3091,"line":17960},[3089,20747,19316],{"class":3177},[3089,20749,3583],{"class":3181},[3089,20751,3586],{"class":3185},[3089,20753,3189],{"class":3099},[3089,20755,20578],{"class":3192},[3089,20757,3526],{"class":3099},[3089,20759,20760,20763,20765],{"class":3091,"line":17976},[3089,20761,20762],{"class":3185},"                                               Foreground",[3089,20764,3189],{"class":3099},[3089,20766,4148],{"class":3192},[3089,20768,20769,20771,20773,20775],{"class":3091,"line":17986},[3089,20770,20585],{"class":3185},[3089,20772,3189],{"class":3099},[3089,20774,14518],{"class":3192},[3089,20776,3292],{"class":3177},[3089,20778,20779,20781,20783],{"class":3091,"line":17998},[3089,20780,19386],{"class":3177},[3089,20782,3882],{"class":3181},[3089,20784,3240],{"class":3177},[3089,20786,20787,20789,20791,20793,20795,20797],{"class":3091,"line":18007},[3089,20788,17713],{"class":3177},[3089,20790,3583],{"class":3181},[3089,20792,3586],{"class":3185},[3089,20794,3189],{"class":3099},[3089,20796,20612],{"class":3192},[3089,20798,3526],{"class":3099},[3089,20800,20801,20803,20805],{"class":3091,"line":18017},[3089,20802,17979],{"class":3185},[3089,20804,3189],{"class":3099},[3089,20806,20623],{"class":3192},[3089,20808,20809,20811,20813],{"class":3091,"line":18026},[3089,20810,17989],{"class":3185},[3089,20812,3189],{"class":3099},[3089,20814,13070],{"class":3192},[3089,20816,20817,20819,20821],{"class":3091,"line":18032},[3089,20818,20636],{"class":3185},[3089,20820,3189],{"class":3099},[3089,20822,20823],{"class":3192},"\"0,5,10,0\"\n",[3089,20825,20826,20829,20831,20834],{"class":3091,"line":18038},[3089,20827,20828],{"class":3185},"                                           HorizontalAlignment",[3089,20830,3189],{"class":3099},[3089,20832,20833],{"class":3192},"\"Right\"",[3089,20835,3292],{"class":3177},[3089,20837,20838,20840,20842],{"class":3091,"line":18053},[3089,20839,17761],{"class":3177},[3089,20841,3574],{"class":3181},[3089,20843,3240],{"class":3177},[3089,20845,20846,20848,20850],{"class":3091,"line":18064},[3089,20847,18010],{"class":3177},[3089,20849,3557],{"class":3181},[3089,20851,3240],{"class":3177},[3089,20853,20854,20856,20858],{"class":3091,"line":18073},[3089,20855,12469],{"class":3177},[3089,20857,12748],{"class":3181},[3089,20859,3240],{"class":3177},[3089,20861,20862,20864,20866],{"class":3091,"line":18084},[3089,20863,9047],{"class":3177},[3089,20865,13864],{"class":3181},[3089,20867,3240],{"class":3177},[3089,20869,20870,20872,20874],{"class":3091,"line":18093},[3089,20871,3314],{"class":3177},[3089,20873,13794],{"class":3181},[3089,20875,3240],{"class":3177},[3089,20877,20878,20880,20882],{"class":3091,"line":18102},[3089,20879,3324],{"class":3177},[3089,20881,10532],{"class":3181},[3089,20883,3240],{"class":3177},[3089,20885,20886],{"class":3091,"line":18117},[3089,20887,3875],{"class":3099},[3089,20889,20890],{"class":3091,"line":18132},[3089,20891,20892],{"class":3279},"        \u003C!-- Input area -->\n",[3089,20894,20895,20897,20899,20901,20903,20905],{"class":3091,"line":18147},[3089,20896,3257],{"class":3177},[3089,20898,3882],{"class":3181},[3089,20900,17824],{"class":3185},[3089,20902,3189],{"class":3099},[3089,20904,15813],{"class":3192},[3089,20906,3526],{"class":3099},[3089,20908,20909,20911,20913],{"class":3091,"line":18156},[3089,20910,4131],{"class":3185},[3089,20912,3189],{"class":3099},[3089,20914,17244],{"class":3192},[3089,20916,20917,20919,20921],{"class":3091,"line":18161},[3089,20918,4163],{"class":3185},[3089,20920,3189],{"class":3099},[3089,20922,20923],{"class":3192},"\"0,1,0,0\"\n",[3089,20925,20926,20928,20930],{"class":3091,"line":18177},[3089,20927,17257],{"class":3185},[3089,20929,3189],{"class":3099},[3089,20931,20932],{"class":3192},"\"{DynamicResource BorderBrush}\"\n",[3089,20934,20935,20937,20939,20941],{"class":3091,"line":18186},[3089,20936,4153],{"class":3185},[3089,20938,3189],{"class":3099},[3089,20940,20115],{"class":3192},[3089,20942,3240],{"class":3177},[3089,20944,20945,20947,20949],{"class":3091,"line":18197},[3089,20946,3268],{"class":3177},[3089,20948,3557],{"class":3181},[3089,20950,3240],{"class":3177},[3089,20952,20953,20955,20957],{"class":3091,"line":18202},[3089,20954,3286],{"class":3177},[3089,20956,17171],{"class":3181},[3089,20958,3240],{"class":3177},[3089,20960,20961,20963,20965,20967,20969,20971],{"class":3091,"line":18217},[3089,20962,9005],{"class":3177},[3089,20964,17180],{"class":3181},[3089,20966,8880],{"class":3185},[3089,20968,3189],{"class":3099},[3089,20970,12653],{"class":3192},[3089,20972,3292],{"class":3177},[3089,20974,20975,20977,20979,20981,20983,20985],{"class":3091,"line":18229},[3089,20976,9005],{"class":3177},[3089,20978,17180],{"class":3181},[3089,20980,8880],{"class":3185},[3089,20982,3189],{"class":3099},[3089,20984,17723],{"class":3192},[3089,20986,3292],{"class":3177},[3089,20988,20989,20991,20993],{"class":3091,"line":18238},[3089,20990,9047],{"class":3177},[3089,20992,17171],{"class":3181},[3089,20994,3240],{"class":3177},[3089,20996,20997],{"class":3091,"line":18247},[3089,20998,17321],{"class":3099},[3089,21000,21001,21003,21005,21007,21009,21011],{"class":3091,"line":18258},[3089,21002,3286],{"class":3177},[3089,21004,3639],{"class":3181},[3089,21006,17229],{"class":3185},[3089,21008,3189],{"class":3099},[3089,21010,3981],{"class":3192},[3089,21012,3526],{"class":3099},[3089,21014,21015,21018,21020],{"class":3091,"line":18263},[3089,21016,21017],{"class":3185},"                            Name",[3089,21019,3189],{"class":3099},[3089,21021,21022],{"class":3192},"\"MessageTextBox\"\n",[3089,21024,21025,21027,21029],{"class":3091,"line":18284},[3089,21026,3696],{"class":3185},[3089,21028,3189],{"class":3099},[3089,21030,21031],{"class":3192},"\"Введіть повідомлення...\"\n",[3089,21033,21034,21037,21039],{"class":3091,"line":18299},[3089,21035,21036],{"class":3185},"                            AcceptsReturn",[3089,21038,3189],{"class":3099},[3089,21040,10418],{"class":3192},[3089,21042,21043,21046,21048],{"class":3091,"line":18310},[3089,21044,21045],{"class":3185},"                            MaxHeight",[3089,21047,3189],{"class":3099},[3089,21049,7637],{"class":3192},[3089,21051,21052,21055,21057],{"class":3091,"line":18325},[3089,21053,21054],{"class":3185},"                            VerticalScrollBarVisibility",[3089,21056,3189],{"class":3099},[3089,21058,21059],{"class":3192},"\"Auto\"\n",[3089,21061,21062,21065,21067,21070],{"class":3091,"line":18336},[3089,21063,21064],{"class":3185},"                            KeyDown",[3089,21066,3189],{"class":3099},[3089,21068,21069],{"class":3192},"\"MessageTextBox_KeyDown\"",[3089,21071,3292],{"class":3177},[3089,21073,21074],{"class":3091,"line":18352},[3089,21075,17321],{"class":3099},[3089,21077,21078,21080,21082,21084,21086,21088],{"class":3091,"line":18361},[3089,21079,3286],{"class":3177},[3089,21081,3726],{"class":3181},[3089,21083,17229],{"class":3185},[3089,21085,3189],{"class":3099},[3089,21087,3898],{"class":3192},[3089,21089,3526],{"class":3099},[3089,21091,21092,21095,21097,21100],{"class":3091,"line":18372},[3089,21093,21094],{"class":3185},"                           Content",[3089,21096,3189],{"class":3099},[3089,21098,21099],{"class":3192},"\"Надіслати\"",[3089,21101,3526],{"class":3099},[3089,21103,21104,21107,21109],{"class":3091,"line":18381},[3089,21105,21106],{"class":3185},"                           Style",[3089,21108,3189],{"class":3099},[3089,21110,3747],{"class":3192},[3089,21112,21113,21115,21117],{"class":3091,"line":18390},[3089,21114,17310],{"class":3185},[3089,21116,3189],{"class":3099},[3089,21118,21119],{"class":3192},"\"10,0,0,0\"\n",[3089,21121,21122,21125,21127],{"class":3091,"line":18399},[3089,21123,21124],{"class":3185},"                           Padding",[3089,21126,3189],{"class":3099},[3089,21128,4158],{"class":3192},[3089,21130,21131,21134,21136,21139],{"class":3091,"line":18404},[3089,21132,21133],{"class":3185},"                           Command",[3089,21135,3189],{"class":3099},[3089,21137,21138],{"class":3192},"\"{Binding SendMessageCommand}\"",[3089,21140,3292],{"class":3177},[3089,21142,21143,21145,21147],{"class":3091,"line":18410},[3089,21144,3314],{"class":3177},[3089,21146,3557],{"class":3181},[3089,21148,3240],{"class":3177},[3089,21150,21151,21153,21155],{"class":3091,"line":18425},[3089,21152,3324],{"class":3177},[3089,21154,3882],{"class":3181},[3089,21156,3240],{"class":3177},[3089,21158,21159,21161,21163],{"class":3091,"line":18436},[3089,21160,3334],{"class":3177},[3089,21162,3557],{"class":3181},[3089,21164,3240],{"class":3177},[3089,21166,21167,21169,21171],{"class":3091,"line":18445},[3089,21168,3344],{"class":3177},[3089,21170,3479],{"class":3181},[3089,21172,3240],{"class":3177},[2964,21174,21175,3165],{},[2983,21176,21177],{},"ChatViewModel.cs",[3079,21179,21181],{"className":4236,"code":21180,"language":4238,"meta":3084,"style":3084},"public class ChatViewModel : INotifyPropertyChanged\n{\n    public ObservableCollection\u003CChatMessage> Messages { get; set; }\n    public ICommand SendMessageCommand { get; }\n    \n    private string _messageText;\n    public string MessageText\n    {\n        get => _messageText;\n        set\n        {\n            _messageText = value;\n            OnPropertyChanged();\n        }\n    }\n    \n    public ChatViewModel()\n    {\n        Messages = new ObservableCollection\u003CChatMessage>();\n        SendMessageCommand = new RelayCommand(SendMessage);\n        \n        // Завантаження історії повідомлень\n        LoadMessages();\n    }\n    \n    private void LoadMessages()\n    {\n        Messages.Add(new ChatMessage \n        { \n            Text = \"Привіт! Як справи?\", \n            Time = DateTime.Now.AddMinutes(-10), \n            IsReceived = true \n        });\n        Messages.Add(new ChatMessage \n        { \n            Text = \"Все добре, дякую! А у тебе?\", \n            Time = DateTime.Now.AddMinutes(-9), \n            IsSent = true \n        });\n        Messages.Add(new ChatMessage \n        { \n            Text = \"Теж добре. Працюю над новим проектом.\", \n            Time = DateTime.Now.AddMinutes(-8), \n            IsReceived = true \n        });\n    }\n    \n    private void SendMessage()\n    {\n        if (string.IsNullOrWhiteSpace(MessageText))\n            return;\n        \n        Messages.Add(new ChatMessage\n        {\n            Text = MessageText,\n            Time = DateTime.Now,\n            IsSent = true\n        });\n        \n        MessageText = string.Empty;\n        \n        // Симуляція відповіді\n        Task.Delay(1000).ContinueWith(_ =>\n        {\n            Application.Current.Dispatcher.Invoke(() =>\n            {\n                Messages.Add(new ChatMessage\n                {\n                    Text = \"Отримав твоє повідомлення!\",\n                    Time = DateTime.Now,\n                    IsReceived = true\n                });\n            });\n        });\n    }\n    \n    public event PropertyChangedEventHandler PropertyChanged;\n    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)\n    {\n        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n    }\n}\n\npublic class ChatMessage\n{\n    public string Text { get; set; }\n    public DateTime Time { get; set; }\n    public bool IsSent { get; set; }\n    public bool IsReceived { get; set; }\n}\n",[3086,21182,21183,21196,21200,21226,21242,21246,21257,21266,21270,21281,21286,21290,21301,21308,21312,21316,21320,21328,21332,21350,21369,21373,21378,21385,21389,21393,21404,21408,21426,21431,21443,21469,21480,21485,21501,21505,21516,21539,21550,21554,21570,21574,21585,21607,21617,21621,21625,21629,21640,21644,21664,21670,21674,21689,21693,21703,21717,21725,21729,21733,21749,21753,21758,21785,21789,21811,21815,21830,21835,21847,21862,21871,21876,21881,21885,21889,21893,21905,21934,21938,21966,21970,21974,21978,21986,21990,22008,22027,22046,22065],{"__ignoreMap":3084},[3089,21184,21185,21187,21189,21192,21194],{"class":3091,"line":3092},[3089,21186,4269],{"class":4268},[3089,21188,4275],{"class":4268},[3089,21190,21191],{"class":4249}," ChatViewModel",[3089,21193,4281],{"class":3099},[3089,21195,19485],{"class":4249},[3089,21197,21198],{"class":3091,"line":3196},[3089,21199,4289],{"class":3099},[3089,21201,21202,21204,21206,21208,21211,21213,21216,21218,21220,21222,21224],{"class":3091,"line":3207},[3089,21203,8043],{"class":4268},[3089,21205,7846],{"class":4249},[3089,21207,3178],{"class":3099},[3089,21209,21210],{"class":4249},"ChatMessage",[3089,21212,7741],{"class":3099},[3089,21214,21215],{"class":4312},"Messages",[3089,21217,7859],{"class":3099},[3089,21219,7862],{"class":4268},[3089,21221,7865],{"class":3099},[3089,21223,7868],{"class":4268},[3089,21225,7871],{"class":3099},[3089,21227,21228,21230,21233,21236,21238,21240],{"class":3091,"line":3218},[3089,21229,8043],{"class":4268},[3089,21231,21232],{"class":4249}," ICommand",[3089,21234,21235],{"class":4312}," SendMessageCommand",[3089,21237,7859],{"class":3099},[3089,21239,7862],{"class":4268},[3089,21241,7871],{"class":3099},[3089,21243,21244],{"class":3091,"line":3229},[3089,21245,5024],{"class":3099},[3089,21247,21248,21250,21252,21255],{"class":3091,"line":3243},[3089,21249,8030],{"class":4268},[3089,21251,8033],{"class":4268},[3089,21253,21254],{"class":4312}," _messageText",[3089,21256,4257],{"class":3099},[3089,21258,21259,21261,21263],{"class":3091,"line":3254},[3089,21260,8043],{"class":4268},[3089,21262,8033],{"class":4268},[3089,21264,21265],{"class":4312}," MessageText\n",[3089,21267,21268],{"class":3091,"line":3265},[3089,21269,4321],{"class":3099},[3089,21271,21272,21274,21276,21279],{"class":3091,"line":3276},[3089,21273,8057],{"class":4268},[3089,21275,6909],{"class":3099},[3089,21277,21278],{"class":4312},"_messageText",[3089,21280,4257],{"class":3099},[3089,21282,21283],{"class":3091,"line":3283},[3089,21284,21285],{"class":4268},"        set\n",[3089,21287,21288],{"class":3091,"line":3295},[3089,21289,5556],{"class":3099},[3089,21291,21292,21295,21297,21299],{"class":3091,"line":3301},[3089,21293,21294],{"class":4312},"            _messageText",[3089,21296,4488],{"class":3099},[3089,21298,6936],{"class":4312},[3089,21300,4257],{"class":3099},[3089,21302,21303,21306],{"class":3091,"line":3311},[3089,21304,21305],{"class":3095},"            OnPropertyChanged",[3089,21307,5728],{"class":3099},[3089,21309,21310],{"class":3091,"line":3321},[3089,21311,5584],{"class":3099},[3089,21313,21314],{"class":3091,"line":3331},[3089,21315,4389],{"class":3099},[3089,21317,21318],{"class":3091,"line":3341},[3089,21319,5024],{"class":3099},[3089,21321,21322,21324,21326],{"class":3091,"line":3660},[3089,21323,8043],{"class":4268},[3089,21325,21191],{"class":3095},[3089,21327,6962],{"class":3099},[3089,21329,21330],{"class":3091,"line":3673},[3089,21331,4321],{"class":3099},[3089,21333,21334,21337,21339,21341,21343,21345,21347],{"class":3091,"line":3678},[3089,21335,21336],{"class":4312},"        Messages",[3089,21338,4488],{"class":3099},[3089,21340,7898],{"class":4268},[3089,21342,7846],{"class":4249},[3089,21344,3178],{"class":3099},[3089,21346,21210],{"class":4249},[3089,21348,21349],{"class":3099},">();\n",[3089,21351,21352,21355,21357,21359,21362,21364,21367],{"class":3091,"line":3693},[3089,21353,21354],{"class":4312},"        SendMessageCommand",[3089,21356,4488],{"class":3099},[3089,21358,7898],{"class":4268},[3089,21360,21361],{"class":4249}," RelayCommand",[3089,21363,4306],{"class":3099},[3089,21365,21366],{"class":4312},"SendMessage",[3089,21368,4339],{"class":3099},[3089,21370,21371],{"class":3091,"line":3704},[3089,21372,3875],{"class":3099},[3089,21374,21375],{"class":3091,"line":3716},[3089,21376,21377],{"class":3279},"        // Завантаження історії повідомлень\n",[3089,21379,21380,21383],{"class":3091,"line":3721},[3089,21381,21382],{"class":3095},"        LoadMessages",[3089,21384,5728],{"class":3099},[3089,21386,21387],{"class":3091,"line":3739},[3089,21388,4389],{"class":3099},[3089,21390,21391],{"class":3091,"line":3750},[3089,21392,5024],{"class":3099},[3089,21394,21395,21397,21399,21402],{"class":3091,"line":3763},[3089,21396,8030],{"class":4268},[3089,21398,4300],{"class":4268},[3089,21400,21401],{"class":3095}," LoadMessages",[3089,21403,6962],{"class":3099},[3089,21405,21406],{"class":3091,"line":3772},[3089,21407,4321],{"class":3099},[3089,21409,21410,21412,21414,21417,21419,21421,21424],{"class":3091,"line":3781},[3089,21411,21336],{"class":4312},[3089,21413,3454],{"class":3099},[3089,21415,21416],{"class":3095},"Add",[3089,21418,4306],{"class":3099},[3089,21420,7898],{"class":4268},[3089,21422,21423],{"class":4249}," ChatMessage",[3089,21425,3526],{"class":3099},[3089,21427,21428],{"class":3091,"line":4190},[3089,21429,21430],{"class":3099},"        { \n",[3089,21432,21433,21435,21437,21440],{"class":3091,"line":5750},[3089,21434,7416],{"class":4312},[3089,21436,4488],{"class":3099},[3089,21438,21439],{"class":3118},"\"Привіт! Як справи?\"",[3089,21441,21442],{"class":3099},", \n",[3089,21444,21445,21448,21450,21452,21454,21456,21458,21461,21463,21466],{"class":3091,"line":5755},[3089,21446,21447],{"class":4312},"            Time",[3089,21449,4488],{"class":3099},[3089,21451,19630],{"class":4312},[3089,21453,3454],{"class":3099},[3089,21455,19635],{"class":4312},[3089,21457,3454],{"class":3099},[3089,21459,21460],{"class":3095},"AddMinutes",[3089,21462,19643],{"class":3099},[3089,21464,21465],{"class":4844},"10",[3089,21467,21468],{"class":3099},"), \n",[3089,21470,21471,21474,21476,21478],{"class":3091,"line":17433},[3089,21472,21473],{"class":4312},"            IsReceived",[3089,21475,4488],{"class":3099},[3089,21477,6976],{"class":4268},[3089,21479,3526],{"class":3099},[3089,21481,21482],{"class":3091,"line":17444},[3089,21483,21484],{"class":3099},"        });\n",[3089,21486,21487,21489,21491,21493,21495,21497,21499],{"class":3091,"line":17459},[3089,21488,21336],{"class":4312},[3089,21490,3454],{"class":3099},[3089,21492,21416],{"class":3095},[3089,21494,4306],{"class":3099},[3089,21496,7898],{"class":4268},[3089,21498,21423],{"class":4249},[3089,21500,3526],{"class":3099},[3089,21502,21503],{"class":3091,"line":17470},[3089,21504,21430],{"class":3099},[3089,21506,21507,21509,21511,21514],{"class":3091,"line":17479},[3089,21508,7416],{"class":4312},[3089,21510,4488],{"class":3099},[3089,21512,21513],{"class":3118},"\"Все добре, дякую! А у тебе?\"",[3089,21515,21442],{"class":3099},[3089,21517,21518,21520,21522,21524,21526,21528,21530,21532,21534,21537],{"class":3091,"line":17488},[3089,21519,21447],{"class":4312},[3089,21521,4488],{"class":3099},[3089,21523,19630],{"class":4312},[3089,21525,3454],{"class":3099},[3089,21527,19635],{"class":4312},[3089,21529,3454],{"class":3099},[3089,21531,21460],{"class":3095},[3089,21533,19643],{"class":3099},[3089,21535,21536],{"class":4844},"9",[3089,21538,21468],{"class":3099},[3089,21540,21541,21544,21546,21548],{"class":3091,"line":17497},[3089,21542,21543],{"class":4312},"            IsSent",[3089,21545,4488],{"class":3099},[3089,21547,6976],{"class":4268},[3089,21549,3526],{"class":3099},[3089,21551,21552],{"class":3091,"line":17502},[3089,21553,21484],{"class":3099},[3089,21555,21556,21558,21560,21562,21564,21566,21568],{"class":3091,"line":17508},[3089,21557,21336],{"class":4312},[3089,21559,3454],{"class":3099},[3089,21561,21416],{"class":3095},[3089,21563,4306],{"class":3099},[3089,21565,7898],{"class":4268},[3089,21567,21423],{"class":4249},[3089,21569,3526],{"class":3099},[3089,21571,21572],{"class":3091,"line":17523},[3089,21573,21430],{"class":3099},[3089,21575,21576,21578,21580,21583],{"class":3091,"line":17538},[3089,21577,7416],{"class":4312},[3089,21579,4488],{"class":3099},[3089,21581,21582],{"class":3118},"\"Теж добре. Працюю над новим проектом.\"",[3089,21584,21442],{"class":3099},[3089,21586,21587,21589,21591,21593,21595,21597,21599,21601,21603,21605],{"class":3091,"line":17554},[3089,21588,21447],{"class":4312},[3089,21590,4488],{"class":3099},[3089,21592,19630],{"class":4312},[3089,21594,3454],{"class":3099},[3089,21596,19635],{"class":4312},[3089,21598,3454],{"class":3099},[3089,21600,21460],{"class":3095},[3089,21602,19643],{"class":3099},[3089,21604,6003],{"class":4844},[3089,21606,21468],{"class":3099},[3089,21608,21609,21611,21613,21615],{"class":3091,"line":17566},[3089,21610,21473],{"class":4312},[3089,21612,4488],{"class":3099},[3089,21614,6976],{"class":4268},[3089,21616,3526],{"class":3099},[3089,21618,21619],{"class":3091,"line":17575},[3089,21620,21484],{"class":3099},[3089,21622,21623],{"class":3091,"line":17586},[3089,21624,4389],{"class":3099},[3089,21626,21627],{"class":3091,"line":17591},[3089,21628,5024],{"class":3099},[3089,21630,21631,21633,21635,21638],{"class":3091,"line":17597},[3089,21632,8030],{"class":4268},[3089,21634,4300],{"class":4268},[3089,21636,21637],{"class":3095}," SendMessage",[3089,21639,6962],{"class":3099},[3089,21641,21642],{"class":3091,"line":17612},[3089,21643,4321],{"class":3099},[3089,21645,21646,21648,21650,21652,21654,21657,21659,21662],{"class":3091,"line":17622},[3089,21647,5540],{"class":4245},[3089,21649,4829],{"class":3099},[3089,21651,5848],{"class":4268},[3089,21653,3454],{"class":3099},[3089,21655,21656],{"class":3095},"IsNullOrWhiteSpace",[3089,21658,4306],{"class":3099},[3089,21660,21661],{"class":4312},"MessageText",[3089,21663,8149],{"class":3099},[3089,21665,21666,21668],{"class":3091,"line":17635},[3089,21667,8224],{"class":4245},[3089,21669,4257],{"class":3099},[3089,21671,21672],{"class":3091,"line":17641},[3089,21673,3875],{"class":3099},[3089,21675,21676,21678,21680,21682,21684,21686],{"class":3091,"line":17656},[3089,21677,21336],{"class":4312},[3089,21679,3454],{"class":3099},[3089,21681,21416],{"class":3095},[3089,21683,4306],{"class":3099},[3089,21685,7898],{"class":4268},[3089,21687,21688],{"class":4249}," ChatMessage\n",[3089,21690,21691],{"class":3091,"line":17668},[3089,21692,5556],{"class":3099},[3089,21694,21695,21697,21699,21701],{"class":3091,"line":17678},[3089,21696,7416],{"class":4312},[3089,21698,4488],{"class":3099},[3089,21700,21661],{"class":4312},[3089,21702,11891],{"class":3099},[3089,21704,21705,21707,21709,21711,21713,21715],{"class":3091,"line":17690},[3089,21706,21447],{"class":4312},[3089,21708,4488],{"class":3099},[3089,21710,19630],{"class":4312},[3089,21712,3454],{"class":3099},[3089,21714,19635],{"class":4312},[3089,21716,11891],{"class":3099},[3089,21718,21719,21721,21723],{"class":3091,"line":17699},[3089,21720,21543],{"class":4312},[3089,21722,4488],{"class":3099},[3089,21724,15584],{"class":4268},[3089,21726,21727],{"class":3091,"line":17710},[3089,21728,21484],{"class":3099},[3089,21730,21731],{"class":3091,"line":17728},[3089,21732,3875],{"class":3099},[3089,21734,21735,21738,21740,21742,21744,21747],{"class":3091,"line":17743},[3089,21736,21737],{"class":4312},"        MessageText",[3089,21739,4488],{"class":3099},[3089,21741,5848],{"class":4268},[3089,21743,3454],{"class":3099},[3089,21745,21746],{"class":4312},"Empty",[3089,21748,4257],{"class":3099},[3089,21750,21751],{"class":3091,"line":17758},[3089,21752,3875],{"class":3099},[3089,21754,21755],{"class":3091,"line":17768},[3089,21756,21757],{"class":3279},"        // Симуляція відповіді\n",[3089,21759,21760,21763,21765,21767,21769,21772,21775,21778,21780,21783],{"class":3091,"line":17774},[3089,21761,21762],{"class":4312},"        Task",[3089,21764,3454],{"class":3099},[3089,21766,6999],{"class":3095},[3089,21768,4306],{"class":3099},[3089,21770,21771],{"class":4844},"1000",[3089,21773,21774],{"class":3099},").",[3089,21776,21777],{"class":3095},"ContinueWith",[3089,21779,4306],{"class":3099},[3089,21781,21782],{"class":4312},"_",[3089,21784,15346],{"class":3099},[3089,21786,21787],{"class":3091,"line":17789},[3089,21788,5556],{"class":3099},[3089,21790,21791,21794,21796,21798,21800,21803,21805,21808],{"class":3091,"line":17800},[3089,21792,21793],{"class":4312},"            Application",[3089,21795,3454],{"class":3099},[3089,21797,4480],{"class":4312},[3089,21799,3454],{"class":3099},[3089,21801,21802],{"class":4312},"Dispatcher",[3089,21804,3454],{"class":3099},[3089,21806,21807],{"class":3095},"Invoke",[3089,21809,21810],{"class":3099},"(() =>\n",[3089,21812,21813],{"class":3091,"line":17812},[3089,21814,8154],{"class":3099},[3089,21816,21817,21820,21822,21824,21826,21828],{"class":3091,"line":17817},[3089,21818,21819],{"class":4312},"                Messages",[3089,21821,3454],{"class":3099},[3089,21823,21416],{"class":3095},[3089,21825,4306],{"class":3099},[3089,21827,7898],{"class":4268},[3089,21829,21688],{"class":4249},[3089,21831,21832],{"class":3091,"line":17833},[3089,21833,21834],{"class":3099},"                {\n",[3089,21836,21837,21840,21842,21845],{"class":3091,"line":17846},[3089,21838,21839],{"class":4312},"                    Text",[3089,21841,4488],{"class":3099},[3089,21843,21844],{"class":3118},"\"Отримав твоє повідомлення!\"",[3089,21846,11891],{"class":3099},[3089,21848,21849,21852,21854,21856,21858,21860],{"class":3091,"line":17856},[3089,21850,21851],{"class":4312},"                    Time",[3089,21853,4488],{"class":3099},[3089,21855,19630],{"class":4312},[3089,21857,3454],{"class":3099},[3089,21859,19635],{"class":4312},[3089,21861,11891],{"class":3099},[3089,21863,21864,21867,21869],{"class":3091,"line":17866},[3089,21865,21866],{"class":4312},"                    IsReceived",[3089,21868,4488],{"class":3099},[3089,21870,15584],{"class":4268},[3089,21872,21873],{"class":3091,"line":17878},[3089,21874,21875],{"class":3099},"                });\n",[3089,21877,21878],{"class":3091,"line":17883},[3089,21879,21880],{"class":3099},"            });\n",[3089,21882,21883],{"class":3091,"line":17904},[3089,21884,21484],{"class":3099},[3089,21886,21887],{"class":3091,"line":17920},[3089,21888,4389],{"class":3099},[3089,21890,21891],{"class":3091,"line":17932},[3089,21892,5024],{"class":3099},[3089,21894,21895,21897,21899,21901,21903],{"class":3091,"line":17948},[3089,21896,8043],{"class":4268},[3089,21898,19810],{"class":4268},[3089,21900,19813],{"class":4249},[3089,21902,19816],{"class":4312},[3089,21904,4257],{"class":3099},[3089,21906,21907,21909,21911,21914,21917,21920,21923,21925,21928,21930,21932],{"class":3091,"line":17960},[3089,21908,4294],{"class":4268},[3089,21910,4300],{"class":4268},[3089,21912,21913],{"class":3095}," OnPropertyChanged",[3089,21915,21916],{"class":3099},"([",[3089,21918,21919],{"class":4249},"CallerMemberName",[3089,21921,21922],{"class":3099},"] ",[3089,21924,5848],{"class":4268},[3089,21926,21927],{"class":4312}," propertyName",[3089,21929,4488],{"class":3099},[3089,21931,8255],{"class":4268},[3089,21933,4316],{"class":3099},[3089,21935,21936],{"class":3091,"line":17976},[3089,21937,4321],{"class":3099},[3089,21939,21940,21943,21945,21947,21949,21952,21954,21956,21959,21961,21964],{"class":3091,"line":17986},[3089,21941,21942],{"class":4312},"        PropertyChanged",[3089,21944,4835],{"class":3099},[3089,21946,21807],{"class":3095},[3089,21948,4306],{"class":3099},[3089,21950,21951],{"class":4268},"this",[3089,21953,4789],{"class":3099},[3089,21955,7898],{"class":4268},[3089,21957,21958],{"class":4249}," PropertyChangedEventArgs",[3089,21960,4306],{"class":3099},[3089,21962,21963],{"class":4312},"propertyName",[3089,21965,11108],{"class":3099},[3089,21967,21968],{"class":3091,"line":17998},[3089,21969,4389],{"class":3099},[3089,21971,21972],{"class":3091,"line":18007},[3089,21973,4394],{"class":3099},[3089,21975,21976],{"class":3091,"line":18017},[3089,21977,4263],{"emptyLinePlaceholder":4262},[3089,21979,21980,21982,21984],{"class":3091,"line":18026},[3089,21981,4269],{"class":4268},[3089,21983,4275],{"class":4268},[3089,21985,21688],{"class":4249},[3089,21987,21988],{"class":3091,"line":18032},[3089,21989,4289],{"class":3099},[3089,21991,21992,21994,21996,21998,22000,22002,22004,22006],{"class":3091,"line":18038},[3089,21993,8043],{"class":4268},[3089,21995,8033],{"class":4268},[3089,21997,3586],{"class":4312},[3089,21999,7859],{"class":3099},[3089,22001,7862],{"class":4268},[3089,22003,7865],{"class":3099},[3089,22005,7868],{"class":4268},[3089,22007,7871],{"class":3099},[3089,22009,22010,22012,22014,22017,22019,22021,22023,22025],{"class":3091,"line":18053},[3089,22011,8043],{"class":4268},[3089,22013,19903],{"class":4249},[3089,22015,22016],{"class":4312}," Time",[3089,22018,7859],{"class":3099},[3089,22020,7862],{"class":4268},[3089,22022,7865],{"class":3099},[3089,22024,7868],{"class":4268},[3089,22026,7871],{"class":3099},[3089,22028,22029,22031,22033,22036,22038,22040,22042,22044],{"class":3091,"line":18064},[3089,22030,8043],{"class":4268},[3089,22032,6883],{"class":4268},[3089,22034,22035],{"class":4312}," IsSent",[3089,22037,7859],{"class":3099},[3089,22039,7862],{"class":4268},[3089,22041,7865],{"class":3099},[3089,22043,7868],{"class":4268},[3089,22045,7871],{"class":3099},[3089,22047,22048,22050,22052,22055,22057,22059,22061,22063],{"class":3091,"line":18073},[3089,22049,8043],{"class":4268},[3089,22051,6883],{"class":4268},[3089,22053,22054],{"class":4312}," IsReceived",[3089,22056,7859],{"class":3099},[3089,22058,7862],{"class":4268},[3089,22060,7865],{"class":3099},[3089,22062,7868],{"class":4268},[3089,22064,7871],{"class":3099},[3089,22066,22067],{"class":3091,"line":18084},[3089,22068,4394],{"class":3099},[3000,22070,22072],{"id":22071},"приклад-3-admin-panel-з-crud-операціями","Приклад 3: Admin panel з CRUD операціями",[2964,22074,22075],{},"Створимо admin панель для управління користувачами з можливістю створення, редагування, видалення, та пошуку.",[2964,22077,22078,3165],{},[2983,22079,22080],{},"UsersManagementWindow.xaml",[3079,22082,22084],{"className":3168,"code":22083,"language":3170,"meta":3084,"style":3084},"\u003Chc:Window x:Class=\"AdminPanel.UsersManagementWindow\"\n           xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n           Title=\"Управління користувачами\" \n           Height=\"700\" \n           Width=\"1000\">\n    \u003CGrid Margin=\"20\">\n        \u003CGrid.RowDefinitions>\n            \u003CRowDefinition Height=\"Auto\"/>\n            \u003CRowDefinition Height=\"Auto\"/>\n            \u003CRowDefinition Height=\"*\"/>\n            \u003CRowDefinition Height=\"Auto\"/>\n        \u003C/Grid.RowDefinitions>\n        \n        \u003C!-- Header -->\n        \u003CTextBlock Grid.Row=\"0\" \n                   Text=\"Управління користувачами\" \n                   FontSize=\"28\" \n                   FontWeight=\"Bold\"\n                   Margin=\"0,0,0,20\"/>\n        \n        \u003C!-- Filters and Actions -->\n        \u003CGrid Grid.Row=\"1\" Margin=\"0,0,0,20\">\n            \u003CGrid.ColumnDefinitions>\n                \u003CColumnDefinition Width=\"*\"/>\n                \u003CColumnDefinition Width=\"Auto\"/>\n                \u003CColumnDefinition Width=\"Auto\"/>\n            \u003C/Grid.ColumnDefinitions>\n            \n            \u003Chc:SearchBar Grid.Column=\"0\" \n                          hc:InfoElement.Placeholder=\"Пошук за ім'ям або email...\"\n                          Style=\"{StaticResource SearchBarPlus}\"\n                          SearchStarted=\"SearchBar_SearchStarted\"\n                          Margin=\"0,0,10,0\"/>\n            \n            \u003Chc:ComboBox Grid.Column=\"1\" \n                         hc:InfoElement.Title=\"Роль\"\n                         Width=\"150\"\n                         SelectedIndex=\"0\"\n                         SelectionChanged=\"RoleFilter_SelectionChanged\"\n                         Margin=\"0,0,10,0\">\n                \u003CComboBoxItem Content=\"Всі ролі\"/>\n                \u003CComboBoxItem Content=\"Адміністратор\"/>\n                \u003CComboBoxItem Content=\"Користувач\"/>\n                \u003CComboBoxItem Content=\"Гість\"/>\n            \u003C/hc:ComboBox>\n            \n            \u003Chc:Button Grid.Column=\"2\" \n                       Content=\"Додати користувача\" \n                       Style=\"{StaticResource ButtonPrimary}\"\n                       hc:IconElement.Geometry=\"{StaticResource AddGeometry}\"\n                       Command=\"{Binding AddUserCommand}\"/>\n        \u003C/Grid>\n        \n        \u003C!-- Users DataGrid -->\n        \u003Chc:Card Grid.Row=\"2\" \n                 Effect=\"{StaticResource EffectShadow2}\" \n                 Padding=\"0\">\n            \u003Chc:DataGrid ItemsSource=\"{Binding FilteredUsers}\"\n                         SelectedItem=\"{Binding SelectedUser}\"\n                         AutoGenerateColumns=\"False\"\n                         CanUserAddRows=\"False\"\n                         HeadersVisibility=\"All\"\n                         RowHeaderWidth=\"60\">\n                \u003CDataGrid.Columns>\n                    \u003CDataGridTextColumn Header=\"ID\" \n                                        Binding=\"{Binding Id}\" \n                                        Width=\"80\"\n                                        IsReadOnly=\"True\"/>\n                    \n                    \u003CDataGridTemplateColumn Header=\"Аватар\" Width=\"80\">\n                        \u003CDataGridTemplateColumn.CellTemplate>\n                            \u003CDataTemplate>\n                                \u003Chc:Gravatar Id=\"{Binding Email}\" \n                                             Width=\"40\" \n                                             Height=\"40\"\n                                             CornerRadius=\"20\"/>\n                            \u003C/DataTemplate>\n                        \u003C/DataGridTemplateColumn.CellTemplate>\n                    \u003C/DataGridTemplateColumn>\n                    \n                    \u003CDataGridTextColumn Header=\"Ім'я\" \n                                        Binding=\"{Binding Name}\" \n                                        Width=\"*\"/>\n                    \n                    \u003CDataGridTextColumn Header=\"Email\" \n                                        Binding=\"{Binding Email}\" \n                                        Width=\"*\"/>\n                    \n                    \u003CDataGridTemplateColumn Header=\"Роль\" Width=\"150\">\n                        \u003CDataGridTemplateColumn.CellTemplate>\n                            \u003CDataTemplate>\n                                \u003Chc:Tag Content=\"{Binding Role}\" \n                                        Style=\"{StaticResource TagPrimary}\"/>\n                            \u003C/DataTemplate>\n                        \u003C/DataGridTemplateColumn.CellTemplate>\n                    \u003C/DataGridTemplateColumn>\n                    \n                    \u003CDataGridTemplateColumn Header=\"Статус\" Width=\"120\">\n                        \u003CDataGridTemplateColumn.CellTemplate>\n                            \u003CDataTemplate>\n                                \u003Chc:Tag Content=\"{Binding Status}\" \n                                        Style=\"{Binding Status, Converter={StaticResource StatusToStyleConverter}}\"/>\n                            \u003C/DataTemplate>\n                        \u003C/DataGridTemplateColumn.CellTemplate>\n                    \u003C/DataGridTemplateColumn>\n                    \n                    \u003CDataGridTextColumn Header=\"Дата реєстрації\" \n                                        Binding=\"{Binding RegisteredDate, StringFormat='dd.MM.yyyy'}\" \n                                        Width=\"150\"\n                                        IsReadOnly=\"True\"/>\n                    \n                    \u003CDataGridTemplateColumn Header=\"Дії\" Width=\"200\">\n                        \u003CDataGridTemplateColumn.CellTemplate>\n                            \u003CDataTemplate>\n                                \u003Chc:UniformSpacingPanel Spacing=\"5\" Orientation=\"Horizontal\">\n                                    \u003Chc:Button Content=\"Редагувати\" \n                                               Style=\"{StaticResource ButtonInfo}\"\n                                               Padding=\"10,5\"\n                                               Command=\"{Binding DataContext.EditUserCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}\"\n                                               CommandParameter=\"{Binding}\"/>\n                                    \n                                    \u003Chc:Button Content=\"Видалити\" \n                                               Style=\"{StaticResource ButtonDanger}\"\n                                               Padding=\"10,5\"\n                                               Command=\"{Binding DataContext.DeleteUserCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}\"\n                                               CommandParameter=\"{Binding}\"/>\n                                \u003C/hc:UniformSpacingPanel>\n                            \u003C/DataTemplate>\n                        \u003C/DataGridTemplateColumn.CellTemplate>\n                    \u003C/DataGridTemplateColumn>\n                \u003C/DataGrid.Columns>\n            \u003C/hc:DataGrid>\n        \u003C/hc:Card>\n        \n        \u003C!-- Pagination -->\n        \u003Chc:Pagination Grid.Row=\"3\" \n                       PageIndex=\"{Binding CurrentPage, Mode=TwoWay}\"\n                       MaxPageCount=\"{Binding TotalPages}\"\n                       DataCountPerPage=\"20\"\n                       PageUpdated=\"Pagination_PageUpdated\"\n                       Margin=\"0,20,0,0\"\n                       HorizontalAlignment=\"Center\"/>\n    \u003C/Grid>\n\u003C/hc:Window>\n",[3086,22085,22086,22099,22107,22118,22128,22138,22152,22160,22174,22188,22202,22216,22224,22228,22232,22246,22257,22267,22275,22285,22289,22294,22314,22322,22336,22350,22364,22372,22376,22390,22400,22409,22419,22431,22435,22449,22459,22468,22476,22485,22495,22510,22525,22539,22554,22562,22566,22580,22592,22600,22610,22622,22630,22634,22639,22653,22664,22675,22688,22698,22707,22716,22725,22736,22744,22758,22769,22778,22789,22793,22814,22822,22830,22844,22855,22864,22875,22883,22891,22899,22903,22917,22927,22937,22941,22955,22965,22975,22979,22999,23007,23015,23029,23040,23048,23056,23064,23068,23088,23096,23104,23118,23129,23137,23145,23153,23157,23172,23183,23191,23201,23205,23225,23233,23241,23261,23275,23285,23295,23305,23317,23322,23336,23344,23352,23361,23371,23379,23387,23395,23403,23411,23419,23427,23431,23436,23450,23459,23468,23477,23487,23496,23506,23514],{"__ignoreMap":3084},[3089,22087,22088,22090,22092,22094,22096],{"class":3091,"line":3092},[3089,22089,3178],{"class":3177},[3089,22091,3479],{"class":3181},[3089,22093,3186],{"class":3185},[3089,22095,3189],{"class":3099},[3089,22097,22098],{"class":3192},"\"AdminPanel.UsersManagementWindow\"\n",[3089,22100,22101,22103,22105],{"class":3091,"line":3196},[3089,22102,3509],{"class":3185},[3089,22104,3189],{"class":3099},[3089,22106,3226],{"class":3192},[3089,22108,22109,22111,22113,22116],{"class":3091,"line":3207},[3089,22110,3518],{"class":3185},[3089,22112,3189],{"class":3099},[3089,22114,22115],{"class":3192},"\"Управління користувачами\"",[3089,22117,3526],{"class":3099},[3089,22119,22120,22122,22124,22126],{"class":3091,"line":3218},[3089,22121,3531],{"class":3185},[3089,22123,3189],{"class":3099},[3089,22125,17143],{"class":3192},[3089,22127,3526],{"class":3099},[3089,22129,22130,22132,22134,22136],{"class":3091,"line":3229},[3089,22131,3543],{"class":3185},[3089,22133,3189],{"class":3099},[3089,22135,8700],{"class":3192},[3089,22137,3240],{"class":3177},[3089,22139,22140,22142,22144,22146,22148,22150],{"class":3091,"line":3243},[3089,22141,3246],{"class":3177},[3089,22143,3557],{"class":3181},[3089,22145,3560],{"class":3185},[3089,22147,3189],{"class":3099},[3089,22149,3565],{"class":3192},[3089,22151,3240],{"class":3177},[3089,22153,22154,22156,22158],{"class":3091,"line":3254},[3089,22155,3257],{"class":3177},[3089,22157,17705],{"class":3181},[3089,22159,3240],{"class":3177},[3089,22161,22162,22164,22166,22168,22170,22172],{"class":3091,"line":3265},[3089,22163,3268],{"class":3177},[3089,22165,17716],{"class":3181},[3089,22167,6752],{"class":3185},[3089,22169,3189],{"class":3099},[3089,22171,17723],{"class":3192},[3089,22173,3292],{"class":3177},[3089,22175,22176,22178,22180,22182,22184,22186],{"class":3091,"line":3276},[3089,22177,3268],{"class":3177},[3089,22179,17716],{"class":3181},[3089,22181,6752],{"class":3185},[3089,22183,3189],{"class":3099},[3089,22185,17723],{"class":3192},[3089,22187,3292],{"class":3177},[3089,22189,22190,22192,22194,22196,22198,22200],{"class":3091,"line":3283},[3089,22191,3268],{"class":3177},[3089,22193,17716],{"class":3181},[3089,22195,6752],{"class":3185},[3089,22197,3189],{"class":3099},[3089,22199,12653],{"class":3192},[3089,22201,3292],{"class":3177},[3089,22203,22204,22206,22208,22210,22212,22214],{"class":3091,"line":3295},[3089,22205,3268],{"class":3177},[3089,22207,17716],{"class":3181},[3089,22209,6752],{"class":3185},[3089,22211,3189],{"class":3099},[3089,22213,17723],{"class":3192},[3089,22215,3292],{"class":3177},[3089,22217,22218,22220,22222],{"class":3091,"line":3301},[3089,22219,3324],{"class":3177},[3089,22221,17705],{"class":3181},[3089,22223,3240],{"class":3177},[3089,22225,22226],{"class":3091,"line":3311},[3089,22227,3875],{"class":3099},[3089,22229,22230],{"class":3091,"line":3321},[3089,22231,20084],{"class":3279},[3089,22233,22234,22236,22238,22240,22242,22244],{"class":3091,"line":3331},[3089,22235,3257],{"class":3177},[3089,22237,3583],{"class":3181},[3089,22239,17824],{"class":3185},[3089,22241,3189],{"class":3099},[3089,22243,3981],{"class":3192},[3089,22245,3526],{"class":3099},[3089,22247,22248,22251,22253,22255],{"class":3091,"line":3341},[3089,22249,22250],{"class":3185},"                   Text",[3089,22252,3189],{"class":3099},[3089,22254,22115],{"class":3192},[3089,22256,3526],{"class":3099},[3089,22258,22259,22261,22263,22265],{"class":3091,"line":3660},[3089,22260,3844],{"class":3185},[3089,22262,3189],{"class":3099},[3089,22264,17561],{"class":3192},[3089,22266,3526],{"class":3099},[3089,22268,22269,22271,22273],{"class":3091,"line":3673},[3089,22270,3855],{"class":3185},[3089,22272,3189],{"class":3099},[3089,22274,3615],{"class":3192},[3089,22276,22277,22279,22281,22283],{"class":3091,"line":3678},[3089,22278,3864],{"class":3185},[3089,22280,3189],{"class":3099},[3089,22282,3625],{"class":3192},[3089,22284,3292],{"class":3177},[3089,22286,22287],{"class":3091,"line":3693},[3089,22288,3875],{"class":3099},[3089,22290,22291],{"class":3091,"line":3704},[3089,22292,22293],{"class":3279},"        \u003C!-- Filters and Actions -->\n",[3089,22295,22296,22298,22300,22302,22304,22306,22308,22310,22312],{"class":3091,"line":3716},[3089,22297,3257],{"class":3177},[3089,22299,3557],{"class":3181},[3089,22301,17824],{"class":3185},[3089,22303,3189],{"class":3099},[3089,22305,3898],{"class":3192},[3089,22307,3560],{"class":3185},[3089,22309,3189],{"class":3099},[3089,22311,3625],{"class":3192},[3089,22313,3240],{"class":3177},[3089,22315,22316,22318,22320],{"class":3091,"line":3721},[3089,22317,3268],{"class":3177},[3089,22319,17171],{"class":3181},[3089,22321,3240],{"class":3177},[3089,22323,22324,22326,22328,22330,22332,22334],{"class":3091,"line":3739},[3089,22325,3286],{"class":3177},[3089,22327,17180],{"class":3181},[3089,22329,8880],{"class":3185},[3089,22331,3189],{"class":3099},[3089,22333,12653],{"class":3192},[3089,22335,3292],{"class":3177},[3089,22337,22338,22340,22342,22344,22346,22348],{"class":3091,"line":3750},[3089,22339,3286],{"class":3177},[3089,22341,17180],{"class":3181},[3089,22343,8880],{"class":3185},[3089,22345,3189],{"class":3099},[3089,22347,17723],{"class":3192},[3089,22349,3292],{"class":3177},[3089,22351,22352,22354,22356,22358,22360,22362],{"class":3091,"line":3763},[3089,22353,3286],{"class":3177},[3089,22355,17180],{"class":3181},[3089,22357,8880],{"class":3185},[3089,22359,3189],{"class":3099},[3089,22361,17723],{"class":3192},[3089,22363,3292],{"class":3177},[3089,22365,22366,22368,22370],{"class":3091,"line":3772},[3089,22367,3314],{"class":3177},[3089,22369,17171],{"class":3181},[3089,22371,3240],{"class":3177},[3089,22373,22374],{"class":3091,"line":3781},[3089,22375,3632],{"class":3099},[3089,22377,22378,22380,22382,22384,22386,22388],{"class":3091,"line":4190},[3089,22379,3268],{"class":3177},[3089,22381,7666],{"class":3181},[3089,22383,17229],{"class":3185},[3089,22385,3189],{"class":3099},[3089,22387,3981],{"class":3192},[3089,22389,3526],{"class":3099},[3089,22391,22392,22395,22397],{"class":3091,"line":5750},[3089,22393,22394],{"class":3185},"                          hc:InfoElement.Placeholder",[3089,22396,3189],{"class":3099},[3089,22398,22399],{"class":3192},"\"Пошук за ім'ям або email...\"\n",[3089,22401,22402,22405,22407],{"class":3091,"line":5755},[3089,22403,22404],{"class":3185},"                          Style",[3089,22406,3189],{"class":3099},[3089,22408,7684],{"class":3192},[3089,22410,22411,22414,22416],{"class":3091,"line":17433},[3089,22412,22413],{"class":3185},"                          SearchStarted",[3089,22415,3189],{"class":3099},[3089,22417,22418],{"class":3192},"\"SearchBar_SearchStarted\"\n",[3089,22420,22421,22424,22426,22429],{"class":3091,"line":17444},[3089,22422,22423],{"class":3185},"                          Margin",[3089,22425,3189],{"class":3099},[3089,22427,22428],{"class":3192},"\"0,0,10,0\"",[3089,22430,3292],{"class":3177},[3089,22432,22433],{"class":3091,"line":17459},[3089,22434,3632],{"class":3099},[3089,22436,22437,22439,22441,22443,22445,22447],{"class":3091,"line":17470},[3089,22438,3268],{"class":3177},[3089,22440,4669],{"class":3181},[3089,22442,17229],{"class":3185},[3089,22444,3189],{"class":3099},[3089,22446,3898],{"class":3192},[3089,22448,3526],{"class":3099},[3089,22450,22451,22454,22456],{"class":3091,"line":17479},[3089,22452,22453],{"class":3185},"                         hc:InfoElement.Title",[3089,22455,3189],{"class":3099},[3089,22457,22458],{"class":3192},"\"Роль\"\n",[3089,22460,22461,22464,22466],{"class":3091,"line":17488},[3089,22462,22463],{"class":3185},"                         Width",[3089,22465,3189],{"class":3099},[3089,22467,13331],{"class":3192},[3089,22469,22470,22472,22474],{"class":3091,"line":17497},[3089,22471,4691],{"class":3185},[3089,22473,3189],{"class":3099},[3089,22475,4168],{"class":3192},[3089,22477,22478,22480,22482],{"class":3091,"line":17502},[3089,22479,4681],{"class":3185},[3089,22481,3189],{"class":3099},[3089,22483,22484],{"class":3192},"\"RoleFilter_SelectionChanged\"\n",[3089,22486,22487,22489,22491,22493],{"class":3091,"line":17508},[3089,22488,18821],{"class":3185},[3089,22490,3189],{"class":3099},[3089,22492,22428],{"class":3192},[3089,22494,3240],{"class":3177},[3089,22496,22497,22499,22501,22503,22505,22508],{"class":3091,"line":17523},[3089,22498,3286],{"class":3177},[3089,22500,4704],{"class":3181},[3089,22502,3729],{"class":3185},[3089,22504,3189],{"class":3099},[3089,22506,22507],{"class":3192},"\"Всі ролі\"",[3089,22509,3292],{"class":3177},[3089,22511,22512,22514,22516,22518,22520,22523],{"class":3091,"line":17538},[3089,22513,3286],{"class":3177},[3089,22515,4704],{"class":3181},[3089,22517,3729],{"class":3185},[3089,22519,3189],{"class":3099},[3089,22521,22522],{"class":3192},"\"Адміністратор\"",[3089,22524,3292],{"class":3177},[3089,22526,22527,22529,22531,22533,22535,22537],{"class":3091,"line":17554},[3089,22528,3286],{"class":3177},[3089,22530,4704],{"class":3181},[3089,22532,3729],{"class":3185},[3089,22534,3189],{"class":3099},[3089,22536,19215],{"class":3192},[3089,22538,3292],{"class":3177},[3089,22540,22541,22543,22545,22547,22549,22552],{"class":3091,"line":17566},[3089,22542,3286],{"class":3177},[3089,22544,4704],{"class":3181},[3089,22546,3729],{"class":3185},[3089,22548,3189],{"class":3099},[3089,22550,22551],{"class":3192},"\"Гість\"",[3089,22553,3292],{"class":3177},[3089,22555,22556,22558,22560],{"class":3091,"line":17575},[3089,22557,3314],{"class":3177},[3089,22559,4669],{"class":3181},[3089,22561,3240],{"class":3177},[3089,22563,22564],{"class":3091,"line":17586},[3089,22565,3632],{"class":3099},[3089,22567,22568,22570,22572,22574,22576,22578],{"class":3091,"line":17591},[3089,22569,3268],{"class":3177},[3089,22571,3726],{"class":3181},[3089,22573,17229],{"class":3185},[3089,22575,3189],{"class":3099},[3089,22577,15813],{"class":3192},[3089,22579,3526],{"class":3099},[3089,22581,22582,22585,22587,22590],{"class":3091,"line":17597},[3089,22583,22584],{"class":3185},"                       Content",[3089,22586,3189],{"class":3099},[3089,22588,22589],{"class":3192},"\"Додати користувача\"",[3089,22591,3526],{"class":3099},[3089,22593,22594,22596,22598],{"class":3091,"line":17612},[3089,22595,3742],{"class":3185},[3089,22597,3189],{"class":3099},[3089,22599,3747],{"class":3192},[3089,22601,22602,22605,22607],{"class":3091,"line":17622},[3089,22603,22604],{"class":3185},"                       hc:IconElement.Geometry",[3089,22606,3189],{"class":3099},[3089,22608,22609],{"class":3192},"\"{StaticResource AddGeometry}\"\n",[3089,22611,22612,22615,22617,22620],{"class":3091,"line":17635},[3089,22613,22614],{"class":3185},"                       Command",[3089,22616,3189],{"class":3099},[3089,22618,22619],{"class":3192},"\"{Binding AddUserCommand}\"",[3089,22621,3292],{"class":3177},[3089,22623,22624,22626,22628],{"class":3091,"line":17641},[3089,22625,3324],{"class":3177},[3089,22627,3557],{"class":3181},[3089,22629,3240],{"class":3177},[3089,22631,22632],{"class":3091,"line":17656},[3089,22633,3875],{"class":3099},[3089,22635,22636],{"class":3091,"line":17668},[3089,22637,22638],{"class":3279},"        \u003C!-- Users DataGrid -->\n",[3089,22640,22641,22643,22645,22647,22649,22651],{"class":3091,"line":17678},[3089,22642,3257],{"class":3177},[3089,22644,9871],{"class":3181},[3089,22646,17824],{"class":3185},[3089,22648,3189],{"class":3099},[3089,22650,15813],{"class":3192},[3089,22652,3526],{"class":3099},[3089,22654,22655,22658,22660,22662],{"class":3091,"line":17690},[3089,22656,22657],{"class":3185},"                 Effect",[3089,22659,3189],{"class":3099},[3089,22661,9879],{"class":3192},[3089,22663,3526],{"class":3099},[3089,22665,22666,22669,22671,22673],{"class":3091,"line":17699},[3089,22667,22668],{"class":3185},"                 Padding",[3089,22670,3189],{"class":3099},[3089,22672,3981],{"class":3192},[3089,22674,3240],{"class":3177},[3089,22676,22677,22679,22681,22683,22685],{"class":3091,"line":17710},[3089,22678,3268],{"class":3177},[3089,22680,12539],{"class":3181},[3089,22682,12542],{"class":3185},[3089,22684,3189],{"class":3099},[3089,22686,22687],{"class":3192},"\"{Binding FilteredUsers}\"\n",[3089,22689,22690,22693,22695],{"class":3091,"line":17728},[3089,22691,22692],{"class":3185},"                         SelectedItem",[3089,22694,3189],{"class":3099},[3089,22696,22697],{"class":3192},"\"{Binding SelectedUser}\"\n",[3089,22699,22700,22703,22705],{"class":3091,"line":17743},[3089,22701,22702],{"class":3185},"                         AutoGenerateColumns",[3089,22704,3189],{"class":3099},[3089,22706,10418],{"class":3192},[3089,22708,22709,22712,22714],{"class":3091,"line":17758},[3089,22710,22711],{"class":3185},"                         CanUserAddRows",[3089,22713,3189],{"class":3099},[3089,22715,10418],{"class":3192},[3089,22717,22718,22721,22723],{"class":3091,"line":17768},[3089,22719,22720],{"class":3185},"                         HeadersVisibility",[3089,22722,3189],{"class":3099},[3089,22724,12575],{"class":3192},[3089,22726,22727,22730,22732,22734],{"class":3091,"line":17774},[3089,22728,22729],{"class":3185},"                         RowHeaderWidth",[3089,22731,3189],{"class":3099},[3089,22733,12585],{"class":3192},[3089,22735,3240],{"class":3177},[3089,22737,22738,22740,22742],{"class":3091,"line":17789},[3089,22739,3286],{"class":3177},[3089,22741,12594],{"class":3181},[3089,22743,3240],{"class":3177},[3089,22745,22746,22748,22750,22752,22754,22756],{"class":3091,"line":17800},[3089,22747,9005],{"class":3177},[3089,22749,12603],{"class":3181},[3089,22751,10281],{"class":3185},[3089,22753,3189],{"class":3099},[3089,22755,12610],{"class":3192},[3089,22757,3526],{"class":3099},[3089,22759,22760,22763,22765,22767],{"class":3091,"line":17812},[3089,22761,22762],{"class":3185},"                                        Binding",[3089,22764,3189],{"class":3099},[3089,22766,12618],{"class":3192},[3089,22768,3526],{"class":3099},[3089,22770,22771,22774,22776],{"class":3091,"line":17817},[3089,22772,22773],{"class":3185},"                                        Width",[3089,22775,3189],{"class":3099},[3089,22777,14878],{"class":3192},[3089,22779,22780,22783,22785,22787],{"class":3091,"line":17833},[3089,22781,22782],{"class":3185},"                                        IsReadOnly",[3089,22784,3189],{"class":3099},[3089,22786,7190],{"class":3192},[3089,22788,3292],{"class":3177},[3089,22790,22791],{"class":3091,"line":17846},[3089,22792,18029],{"class":3099},[3089,22794,22795,22797,22799,22801,22803,22806,22808,22810,22812],{"class":3091,"line":17856},[3089,22796,9005],{"class":3177},[3089,22798,12717],{"class":3181},[3089,22800,10281],{"class":3185},[3089,22802,3189],{"class":3099},[3089,22804,22805],{"class":3192},"\"Аватар\"",[3089,22807,8880],{"class":3185},[3089,22809,3189],{"class":3099},[3089,22811,12625],{"class":3192},[3089,22813,3240],{"class":3177},[3089,22815,22816,22818,22820],{"class":3091,"line":17866},[3089,22817,12453],{"class":3177},[3089,22819,12739],{"class":3181},[3089,22821,3240],{"class":3177},[3089,22823,22824,22826,22828],{"class":3091,"line":17878},[3089,22825,17702],{"class":3177},[3089,22827,12748],{"class":3181},[3089,22829,3240],{"class":3177},[3089,22831,22832,22834,22836,22838,22840,22842],{"class":3091,"line":17883},[3089,22833,17713],{"class":3177},[3089,22835,14847],{"class":3181},[3089,22837,14850],{"class":3185},[3089,22839,3189],{"class":3099},[3089,22841,12674],{"class":3192},[3089,22843,3526],{"class":3099},[3089,22845,22846,22849,22851,22853],{"class":3091,"line":17904},[3089,22847,22848],{"class":3185},"                                             Width",[3089,22850,3189],{"class":3099},[3089,22852,14888],{"class":3192},[3089,22854,3526],{"class":3099},[3089,22856,22857,22860,22862],{"class":3091,"line":17920},[3089,22858,22859],{"class":3185},"                                             Height",[3089,22861,3189],{"class":3099},[3089,22863,20165],{"class":3192},[3089,22865,22866,22869,22871,22873],{"class":3091,"line":17932},[3089,22867,22868],{"class":3185},"                                             CornerRadius",[3089,22870,3189],{"class":3099},[3089,22872,3565],{"class":3192},[3089,22874,3292],{"class":3177},[3089,22876,22877,22879,22881],{"class":3091,"line":17948},[3089,22878,17761],{"class":3177},[3089,22880,12748],{"class":3181},[3089,22882,3240],{"class":3177},[3089,22884,22885,22887,22889],{"class":3091,"line":17960},[3089,22886,18010],{"class":3177},[3089,22888,12739],{"class":3181},[3089,22890,3240],{"class":3177},[3089,22892,22893,22895,22897],{"class":3091,"line":17976},[3089,22894,12469],{"class":3177},[3089,22896,12717],{"class":3181},[3089,22898,3240],{"class":3177},[3089,22900,22901],{"class":3091,"line":17986},[3089,22902,18029],{"class":3099},[3089,22904,22905,22907,22909,22911,22913,22915],{"class":3091,"line":17998},[3089,22906,9005],{"class":3177},[3089,22908,12603],{"class":3181},[3089,22910,10281],{"class":3185},[3089,22912,3189],{"class":3099},[3089,22914,10321],{"class":3192},[3089,22916,3526],{"class":3099},[3089,22918,22919,22921,22923,22925],{"class":3091,"line":18007},[3089,22920,22762],{"class":3185},[3089,22922,3189],{"class":3099},[3089,22924,12646],{"class":3192},[3089,22926,3526],{"class":3099},[3089,22928,22929,22931,22933,22935],{"class":3091,"line":18017},[3089,22930,22773],{"class":3185},[3089,22932,3189],{"class":3099},[3089,22934,12653],{"class":3192},[3089,22936,3292],{"class":3177},[3089,22938,22939],{"class":3091,"line":18026},[3089,22940,18029],{"class":3099},[3089,22942,22943,22945,22947,22949,22951,22953],{"class":3091,"line":18032},[3089,22944,9005],{"class":3177},[3089,22946,12603],{"class":3181},[3089,22948,10281],{"class":3185},[3089,22950,3189],{"class":3099},[3089,22952,10342],{"class":3192},[3089,22954,3526],{"class":3099},[3089,22956,22957,22959,22961,22963],{"class":3091,"line":18038},[3089,22958,22762],{"class":3185},[3089,22960,3189],{"class":3099},[3089,22962,12674],{"class":3192},[3089,22964,3526],{"class":3099},[3089,22966,22967,22969,22971,22973],{"class":3091,"line":18053},[3089,22968,22773],{"class":3185},[3089,22970,3189],{"class":3099},[3089,22972,12653],{"class":3192},[3089,22974,3292],{"class":3177},[3089,22976,22977],{"class":3091,"line":18064},[3089,22978,18029],{"class":3099},[3089,22980,22981,22983,22985,22987,22989,22991,22993,22995,22997],{"class":3091,"line":18073},[3089,22982,9005],{"class":3177},[3089,22984,12717],{"class":3181},[3089,22986,10281],{"class":3185},[3089,22988,3189],{"class":3099},[3089,22990,12695],{"class":3192},[3089,22992,8880],{"class":3185},[3089,22994,3189],{"class":3099},[3089,22996,8885],{"class":3192},[3089,22998,3240],{"class":3177},[3089,23000,23001,23003,23005],{"class":3091,"line":18084},[3089,23002,12453],{"class":3177},[3089,23004,12739],{"class":3181},[3089,23006,3240],{"class":3177},[3089,23008,23009,23011,23013],{"class":3091,"line":18093},[3089,23010,17702],{"class":3177},[3089,23012,12748],{"class":3181},[3089,23014,3240],{"class":3177},[3089,23016,23017,23019,23021,23023,23025,23027],{"class":3091,"line":18102},[3089,23018,17713],{"class":3177},[3089,23020,13748],{"class":3181},[3089,23022,3729],{"class":3185},[3089,23024,3189],{"class":3099},[3089,23026,12702],{"class":3192},[3089,23028,3526],{"class":3099},[3089,23030,23031,23034,23036,23038],{"class":3091,"line":18117},[3089,23032,23033],{"class":3185},"                                        Style",[3089,23035,3189],{"class":3099},[3089,23037,13907],{"class":3192},[3089,23039,3292],{"class":3177},[3089,23041,23042,23044,23046],{"class":3091,"line":18132},[3089,23043,17761],{"class":3177},[3089,23045,12748],{"class":3181},[3089,23047,3240],{"class":3177},[3089,23049,23050,23052,23054],{"class":3091,"line":18147},[3089,23051,18010],{"class":3177},[3089,23053,12739],{"class":3181},[3089,23055,3240],{"class":3177},[3089,23057,23058,23060,23062],{"class":3091,"line":18156},[3089,23059,12469],{"class":3177},[3089,23061,12717],{"class":3181},[3089,23063,3240],{"class":3177},[3089,23065,23066],{"class":3091,"line":18161},[3089,23067,18029],{"class":3099},[3089,23069,23070,23072,23074,23076,23078,23080,23082,23084,23086],{"class":3091,"line":18177},[3089,23071,9005],{"class":3177},[3089,23073,12717],{"class":3181},[3089,23075,10281],{"class":3185},[3089,23077,3189],{"class":3099},[3089,23079,19302],{"class":3192},[3089,23081,8880],{"class":3185},[3089,23083,3189],{"class":3099},[3089,23085,9460],{"class":3192},[3089,23087,3240],{"class":3177},[3089,23089,23090,23092,23094],{"class":3091,"line":18186},[3089,23091,12453],{"class":3177},[3089,23093,12739],{"class":3181},[3089,23095,3240],{"class":3177},[3089,23097,23098,23100,23102],{"class":3091,"line":18197},[3089,23099,17702],{"class":3177},[3089,23101,12748],{"class":3181},[3089,23103,3240],{"class":3177},[3089,23105,23106,23108,23110,23112,23114,23116],{"class":3091,"line":18202},[3089,23107,17713],{"class":3177},[3089,23109,13748],{"class":3181},[3089,23111,3729],{"class":3185},[3089,23113,3189],{"class":3099},[3089,23115,19345],{"class":3192},[3089,23117,3526],{"class":3099},[3089,23119,23120,23122,23124,23127],{"class":3091,"line":18217},[3089,23121,23033],{"class":3185},[3089,23123,3189],{"class":3099},[3089,23125,23126],{"class":3192},"\"{Binding Status, Converter={StaticResource StatusToStyleConverter}}\"",[3089,23128,3292],{"class":3177},[3089,23130,23131,23133,23135],{"class":3091,"line":18229},[3089,23132,17761],{"class":3177},[3089,23134,12748],{"class":3181},[3089,23136,3240],{"class":3177},[3089,23138,23139,23141,23143],{"class":3091,"line":18238},[3089,23140,18010],{"class":3177},[3089,23142,12739],{"class":3181},[3089,23144,3240],{"class":3177},[3089,23146,23147,23149,23151],{"class":3091,"line":18247},[3089,23148,12469],{"class":3177},[3089,23150,12717],{"class":3181},[3089,23152,3240],{"class":3177},[3089,23154,23155],{"class":3091,"line":18258},[3089,23156,18029],{"class":3099},[3089,23158,23159,23161,23163,23165,23167,23170],{"class":3091,"line":18263},[3089,23160,9005],{"class":3177},[3089,23162,12603],{"class":3181},[3089,23164,10281],{"class":3185},[3089,23166,3189],{"class":3099},[3089,23168,23169],{"class":3192},"\"Дата реєстрації\"",[3089,23171,3526],{"class":3099},[3089,23173,23174,23176,23178,23181],{"class":3091,"line":18284},[3089,23175,22762],{"class":3185},[3089,23177,3189],{"class":3099},[3089,23179,23180],{"class":3192},"\"{Binding RegisteredDate, StringFormat='dd.MM.yyyy'}\"",[3089,23182,3526],{"class":3099},[3089,23184,23185,23187,23189],{"class":3091,"line":18299},[3089,23186,22773],{"class":3185},[3089,23188,3189],{"class":3099},[3089,23190,13331],{"class":3192},[3089,23192,23193,23195,23197,23199],{"class":3091,"line":18310},[3089,23194,22782],{"class":3185},[3089,23196,3189],{"class":3099},[3089,23198,7190],{"class":3192},[3089,23200,3292],{"class":3177},[3089,23202,23203],{"class":3091,"line":18325},[3089,23204,18029],{"class":3099},[3089,23206,23207,23209,23211,23213,23215,23217,23219,23221,23223],{"class":3091,"line":18336},[3089,23208,9005],{"class":3177},[3089,23210,12717],{"class":3181},[3089,23212,10281],{"class":3185},[3089,23214,3189],{"class":3099},[3089,23216,12724],{"class":3192},[3089,23218,8880],{"class":3185},[3089,23220,3189],{"class":3099},[3089,23222,9643],{"class":3192},[3089,23224,3240],{"class":3177},[3089,23226,23227,23229,23231],{"class":3091,"line":18352},[3089,23228,12453],{"class":3177},[3089,23230,12739],{"class":3181},[3089,23232,3240],{"class":3177},[3089,23234,23235,23237,23239],{"class":3091,"line":18361},[3089,23236,17702],{"class":3177},[3089,23238,12748],{"class":3181},[3089,23240,3240],{"class":3177},[3089,23242,23243,23245,23247,23249,23251,23253,23255,23257,23259],{"class":3091,"line":18372},[3089,23244,17713],{"class":3177},[3089,23246,9238],{"class":3181},[3089,23248,9241],{"class":3185},[3089,23250,3189],{"class":3099},[3089,23252,6426],{"class":3192},[3089,23254,6384],{"class":3185},[3089,23256,3189],{"class":3099},[3089,23258,6389],{"class":3192},[3089,23260,3240],{"class":3177},[3089,23262,23263,23265,23267,23269,23271,23273],{"class":3091,"line":18381},[3089,23264,19316],{"class":3177},[3089,23266,3726],{"class":3181},[3089,23268,3729],{"class":3185},[3089,23270,3189],{"class":3099},[3089,23272,12777],{"class":3192},[3089,23274,3526],{"class":3099},[3089,23276,23277,23280,23282],{"class":3091,"line":18390},[3089,23278,23279],{"class":3185},"                                               Style",[3089,23281,3189],{"class":3099},[3089,23283,23284],{"class":3192},"\"{StaticResource ButtonInfo}\"\n",[3089,23286,23287,23290,23292],{"class":3091,"line":18399},[3089,23288,23289],{"class":3185},"                                               Padding",[3089,23291,3189],{"class":3099},[3089,23293,23294],{"class":3192},"\"10,5\"\n",[3089,23296,23297,23300,23302],{"class":3091,"line":18404},[3089,23298,23299],{"class":3185},"                                               Command",[3089,23301,3189],{"class":3099},[3089,23303,23304],{"class":3192},"\"{Binding DataContext.EditUserCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}\"\n",[3089,23306,23307,23310,23312,23315],{"class":3091,"line":18410},[3089,23308,23309],{"class":3185},"                                               CommandParameter",[3089,23311,3189],{"class":3099},[3089,23313,23314],{"class":3192},"\"{Binding}\"",[3089,23316,3292],{"class":3177},[3089,23318,23319],{"class":3091,"line":18425},[3089,23320,23321],{"class":3099},"                                    \n",[3089,23323,23324,23326,23328,23330,23332,23334],{"class":3091,"line":18436},[3089,23325,19316],{"class":3177},[3089,23327,3726],{"class":3181},[3089,23329,3729],{"class":3185},[3089,23331,3189],{"class":3099},[3089,23333,12823],{"class":3192},[3089,23335,3526],{"class":3099},[3089,23337,23338,23340,23342],{"class":3091,"line":18445},[3089,23339,23279],{"class":3185},[3089,23341,3189],{"class":3099},[3089,23343,12834],{"class":3192},[3089,23345,23346,23348,23350],{"class":3091,"line":18456},[3089,23347,23289],{"class":3185},[3089,23349,3189],{"class":3099},[3089,23351,23294],{"class":3192},[3089,23353,23354,23356,23358],{"class":3091,"line":18465},[3089,23355,23299],{"class":3185},[3089,23357,3189],{"class":3099},[3089,23359,23360],{"class":3192},"\"{Binding DataContext.DeleteUserCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}\"\n",[3089,23362,23363,23365,23367,23369],{"class":3091,"line":18474},[3089,23364,23309],{"class":3185},[3089,23366,3189],{"class":3099},[3089,23368,23314],{"class":3192},[3089,23370,3292],{"class":3177},[3089,23372,23373,23375,23377],{"class":3091,"line":18489},[3089,23374,19386],{"class":3177},[3089,23376,9238],{"class":3181},[3089,23378,3240],{"class":3177},[3089,23380,23381,23383,23385],{"class":3091,"line":18504},[3089,23382,17761],{"class":3177},[3089,23384,12748],{"class":3181},[3089,23386,3240],{"class":3177},[3089,23388,23389,23391,23393],{"class":3091,"line":18519},[3089,23390,18010],{"class":3177},[3089,23392,12739],{"class":3181},[3089,23394,3240],{"class":3177},[3089,23396,23397,23399,23401],{"class":3091,"line":18528},[3089,23398,12469],{"class":3177},[3089,23400,12717],{"class":3181},[3089,23402,3240],{"class":3177},[3089,23404,23405,23407,23409],{"class":3091,"line":18533},[3089,23406,9047],{"class":3177},[3089,23408,12594],{"class":3181},[3089,23410,3240],{"class":3177},[3089,23412,23413,23415,23417],{"class":3091,"line":18549},[3089,23414,3314],{"class":3177},[3089,23416,12539],{"class":3181},[3089,23418,3240],{"class":3177},[3089,23420,23421,23423,23425],{"class":3091,"line":18558},[3089,23422,3324],{"class":3177},[3089,23424,9871],{"class":3181},[3089,23426,3240],{"class":3177},[3089,23428,23429],{"class":3091,"line":18569},[3089,23430,3875],{"class":3099},[3089,23432,23433],{"class":3091,"line":18574},[3089,23434,23435],{"class":3279},"        \u003C!-- Pagination -->\n",[3089,23437,23438,23440,23442,23444,23446,23448],{"class":3091,"line":18589},[3089,23439,3257],{"class":3177},[3089,23441,11681],{"class":3181},[3089,23443,17824],{"class":3185},[3089,23445,3189],{"class":3099},[3089,23447,9546],{"class":3192},[3089,23449,3526],{"class":3099},[3089,23451,23452,23455,23457],{"class":3091,"line":18601},[3089,23453,23454],{"class":3185},"                       PageIndex",[3089,23456,3189],{"class":3099},[3089,23458,11689],{"class":3192},[3089,23460,23461,23464,23466],{"class":3091,"line":18610},[3089,23462,23463],{"class":3185},"                       MaxPageCount",[3089,23465,3189],{"class":3099},[3089,23467,11699],{"class":3192},[3089,23469,23470,23473,23475],{"class":3091,"line":18619},[3089,23471,23472],{"class":3185},"                       DataCountPerPage",[3089,23474,3189],{"class":3099},[3089,23476,9891],{"class":3192},[3089,23478,23479,23482,23484],{"class":3091,"line":18630},[3089,23480,23481],{"class":3185},"                       PageUpdated",[3089,23483,3189],{"class":3099},[3089,23485,23486],{"class":3192},"\"Pagination_PageUpdated\"\n",[3089,23488,23489,23491,23493],{"class":3091,"line":18635},[3089,23490,3620],{"class":3185},[3089,23492,3189],{"class":3099},[3089,23494,23495],{"class":3192},"\"0,20,0,0\"\n",[3089,23497,23498,23500,23502,23504],{"class":3091,"line":18656},[3089,23499,3753],{"class":3185},[3089,23501,3189],{"class":3099},[3089,23503,6397],{"class":3192},[3089,23505,3292],{"class":3177},[3089,23507,23508,23510,23512],{"class":3091,"line":18672},[3089,23509,3334],{"class":3177},[3089,23511,3557],{"class":3181},[3089,23513,3240],{"class":3177},[3089,23515,23516,23518,23520],{"class":3091,"line":18684},[3089,23517,3344],{"class":3177},[3089,23519,3479],{"class":3181},[3089,23521,3240],{"class":3177},[2964,23523,23524,3165],{},[2983,23525,23526],{},"UsersManagementViewModel.cs",[3079,23528,23530],{"className":4236,"code":23529,"language":4238,"meta":3084,"style":3084},"public class UsersManagementViewModel : INotifyPropertyChanged\n{\n    private ObservableCollection\u003CUser> _allUsers;\n    private ObservableCollection\u003CUser> _filteredUsers;\n    private User _selectedUser;\n    private int _currentPage = 1;\n    private int _totalPages;\n    private string _searchText;\n    private string _roleFilter;\n    \n    public ObservableCollection\u003CUser> FilteredUsers\n    {\n        get => _filteredUsers;\n        set\n        {\n            _filteredUsers = value;\n            OnPropertyChanged();\n        }\n    }\n    \n    public User SelectedUser\n    {\n        get => _selectedUser;\n        set\n        {\n            _selectedUser = value;\n            OnPropertyChanged();\n        }\n    }\n    \n    public int CurrentPage\n    {\n        get => _currentPage;\n        set\n        {\n            _currentPage = value;\n            OnPropertyChanged();\n            LoadPage();\n        }\n    }\n    \n    public int TotalPages\n    {\n        get => _totalPages;\n        set\n        {\n            _totalPages = value;\n            OnPropertyChanged();\n        }\n    }\n    \n    public ICommand AddUserCommand { get; }\n    public ICommand EditUserCommand { get; }\n    public ICommand DeleteUserCommand { get; }\n    \n    public UsersManagementViewModel()\n    {\n        AddUserCommand = new RelayCommand(AddUser);\n        EditUserCommand = new RelayCommand\u003CUser>(EditUser);\n        DeleteUserCommand = new RelayCommand\u003CUser>(DeleteUser);\n        \n        LoadData();\n    }\n    \n    private void LoadData()\n    {\n        // Симуляція завантаження даних\n        _allUsers = new ObservableCollection\u003CUser>();\n        for (int i = 1; i \u003C= 100; i++)\n        {\n            _allUsers.Add(new User\n            {\n                Id = i,\n                Name = $\"Користувач {i}\",\n                Email = $\"user{i}@example.com\",\n                Role = i % 3 == 0 ? \"Адміністратор\" : i % 2 == 0 ? \"Користувач\" : \"Гість\",\n                Status = i % 5 == 0 ? \"Неактивний\" : \"Активний\",\n                RegisteredDate = DateTime.Now.AddDays(-i * 10)\n            });\n        }\n        \n        ApplyFilters();\n    }\n    \n    private void ApplyFilters()\n    {\n        var filtered = _allUsers.AsEnumerable();\n        \n        // Фільтр за пошуком\n        if (!string.IsNullOrWhiteSpace(_searchText))\n        {\n            filtered = filtered.Where(u => \n                u.Name.Contains(_searchText, StringComparison.OrdinalIgnoreCase) ||\n                u.Email.Contains(_searchText, StringComparison.OrdinalIgnoreCase));\n        }\n        \n        // Фільтр за роллю\n        if (!string.IsNullOrWhiteSpace(_roleFilter) && _roleFilter != \"Всі ролі\")\n        {\n            filtered = filtered.Where(u => u.Role == _roleFilter);\n        }\n        \n        var filteredList = filtered.ToList();\n        TotalPages = (int)Math.Ceiling(filteredList.Count / 20.0);\n        \n        // Пагінація\n        FilteredUsers = new ObservableCollection\u003CUser>(\n            filteredList.Skip((CurrentPage - 1) * 20).Take(20));\n    }\n    \n    private void LoadPage()\n    {\n        ApplyFilters();\n    }\n    \n    public void Search(string searchText)\n    {\n        _searchText = searchText;\n        CurrentPage = 1;\n        ApplyFilters();\n    }\n    \n    public void FilterByRole(string role)\n    {\n        _roleFilter = role;\n        CurrentPage = 1;\n        ApplyFilters();\n    }\n    \n    private void AddUser()\n    {\n        var dialog = new UserEditDialog();\n        if (dialog.ShowDialog() == true)\n        {\n            var newUser = dialog.User;\n            newUser.Id = _allUsers.Max(u => u.Id) + 1;\n            _allUsers.Add(newUser);\n            ApplyFilters();\n            \n            Growl.Success($\"Користувача {newUser.Name} додано успішно!\");\n        }\n    }\n    \n    private void EditUser(User user)\n    {\n        var dialog = new UserEditDialog(user);\n        if (dialog.ShowDialog() == true)\n        {\n            var index = _allUsers.IndexOf(user);\n            _allUsers[index] = dialog.User;\n            ApplyFilters();\n            \n            Growl.Success($\"Користувача {user.Name} оновлено успішно!\");\n        }\n    }\n    \n    private void DeleteUser(User user)\n    {\n        var result = HandyControl.Controls.MessageBox.Show(\n            $\"Ви впевнені, що хочете видалити користувача {user.Name}?\",\n            \"Підтвердження видалення\",\n            MessageBoxButton.YesNo,\n            MessageBoxImage.Warning);\n        \n        if (result == MessageBoxResult.Yes)\n        {\n            _allUsers.Remove(user);\n            ApplyFilters();\n            \n            Growl.Success($\"Користувача {user.Name} видалено успішно!\");\n        }\n    }\n    \n    public event PropertyChangedEventHandler PropertyChanged;\n    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)\n    {\n        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n    }\n}\n\npublic class User\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public string Email { get; set; }\n    public string Role { get; set; }\n    public string Status { get; set; }\n    public DateTime RegisteredDate { get; set; }\n}\n",[3086,23531,23532,23545,23549,23567,23584,23596,23611,23622,23633,23644,23648,23663,23667,23677,23681,23685,23696,23702,23706,23710,23714,23723,23727,23738,23742,23746,23757,23763,23767,23771,23775,23784,23788,23799,23803,23807,23818,23824,23831,23835,23839,23843,23852,23856,23867,23871,23875,23886,23892,23896,23900,23904,23919,23934,23949,23953,23961,23965,23983,24005,24027,24031,24037,24041,24045,24055,24059,24064,24081,24115,24119,24135,24139,24150,24174,24195,24239,24269,24297,24301,24305,24309,24316,24320,24324,24335,24339,24357,24361,24366,24385,24389,24412,24442,24468,24472,24476,24481,24510,24514,24545,24549,24553,24571,24610,24614,24619,24637,24675,24679,24683,24694,24698,24704,24708,24712,24729,24733,24745,24756,24762,24766,24770,24788,24792,24804,24814,24820,24824,24828,24839,24843,24859,24879,24883,24901,24938,24953,24960,24964,24993,24997,25001,25005,25023,25027,25046,25064,25068,25090,25110,25116,25120,25147,25151,25155,25159,25176,25180,25207,25227,25234,25245,25256,25260,25278,25282,25297,25303,25307,25334,25338,25342,25346,25358,25382,25386,25410,25414,25418,25422,25430,25434,25452,25470,25488,25506,25524,25543],{"__ignoreMap":3084},[3089,23533,23534,23536,23538,23541,23543],{"class":3091,"line":3092},[3089,23535,4269],{"class":4268},[3089,23537,4275],{"class":4268},[3089,23539,23540],{"class":4249}," UsersManagementViewModel",[3089,23542,4281],{"class":3099},[3089,23544,19485],{"class":4249},[3089,23546,23547],{"class":3091,"line":3196},[3089,23548,4289],{"class":3099},[3089,23550,23551,23553,23555,23557,23560,23562,23565],{"class":3091,"line":3207},[3089,23552,8030],{"class":4268},[3089,23554,7846],{"class":4249},[3089,23556,3178],{"class":3099},[3089,23558,23559],{"class":4249},"User",[3089,23561,7741],{"class":3099},[3089,23563,23564],{"class":4312},"_allUsers",[3089,23566,4257],{"class":3099},[3089,23568,23569,23571,23573,23575,23577,23579,23582],{"class":3091,"line":3218},[3089,23570,8030],{"class":4268},[3089,23572,7846],{"class":4249},[3089,23574,3178],{"class":3099},[3089,23576,23559],{"class":4249},[3089,23578,7741],{"class":3099},[3089,23580,23581],{"class":4312},"_filteredUsers",[3089,23583,4257],{"class":3099},[3089,23585,23586,23588,23591,23594],{"class":3091,"line":3229},[3089,23587,8030],{"class":4268},[3089,23589,23590],{"class":4249}," User",[3089,23592,23593],{"class":4312}," _selectedUser",[3089,23595,4257],{"class":3099},[3089,23597,23598,23600,23602,23605,23607,23609],{"class":3091,"line":3243},[3089,23599,8030],{"class":4268},[3089,23601,19846],{"class":4268},[3089,23603,23604],{"class":4312}," _currentPage",[3089,23606,4488],{"class":3099},[3089,23608,19600],{"class":4844},[3089,23610,4257],{"class":3099},[3089,23612,23613,23615,23617,23620],{"class":3091,"line":3254},[3089,23614,8030],{"class":4268},[3089,23616,19846],{"class":4268},[3089,23618,23619],{"class":4312}," _totalPages",[3089,23621,4257],{"class":3099},[3089,23623,23624,23626,23628,23631],{"class":3091,"line":3265},[3089,23625,8030],{"class":4268},[3089,23627,8033],{"class":4268},[3089,23629,23630],{"class":4312}," _searchText",[3089,23632,4257],{"class":3099},[3089,23634,23635,23637,23639,23642],{"class":3091,"line":3276},[3089,23636,8030],{"class":4268},[3089,23638,8033],{"class":4268},[3089,23640,23641],{"class":4312}," _roleFilter",[3089,23643,4257],{"class":3099},[3089,23645,23646],{"class":3091,"line":3283},[3089,23647,5024],{"class":3099},[3089,23649,23650,23652,23654,23656,23658,23660],{"class":3091,"line":3295},[3089,23651,8043],{"class":4268},[3089,23653,7846],{"class":4249},[3089,23655,3178],{"class":3099},[3089,23657,23559],{"class":4249},[3089,23659,7741],{"class":3099},[3089,23661,23662],{"class":4312},"FilteredUsers\n",[3089,23664,23665],{"class":3091,"line":3301},[3089,23666,4321],{"class":3099},[3089,23668,23669,23671,23673,23675],{"class":3091,"line":3311},[3089,23670,8057],{"class":4268},[3089,23672,6909],{"class":3099},[3089,23674,23581],{"class":4312},[3089,23676,4257],{"class":3099},[3089,23678,23679],{"class":3091,"line":3321},[3089,23680,21285],{"class":4268},[3089,23682,23683],{"class":3091,"line":3331},[3089,23684,5556],{"class":3099},[3089,23686,23687,23690,23692,23694],{"class":3091,"line":3341},[3089,23688,23689],{"class":4312},"            _filteredUsers",[3089,23691,4488],{"class":3099},[3089,23693,6936],{"class":4312},[3089,23695,4257],{"class":3099},[3089,23697,23698,23700],{"class":3091,"line":3660},[3089,23699,21305],{"class":3095},[3089,23701,5728],{"class":3099},[3089,23703,23704],{"class":3091,"line":3673},[3089,23705,5584],{"class":3099},[3089,23707,23708],{"class":3091,"line":3678},[3089,23709,4389],{"class":3099},[3089,23711,23712],{"class":3091,"line":3693},[3089,23713,5024],{"class":3099},[3089,23715,23716,23718,23720],{"class":3091,"line":3704},[3089,23717,8043],{"class":4268},[3089,23719,23590],{"class":4249},[3089,23721,23722],{"class":4312}," SelectedUser\n",[3089,23724,23725],{"class":3091,"line":3716},[3089,23726,4321],{"class":3099},[3089,23728,23729,23731,23733,23736],{"class":3091,"line":3721},[3089,23730,8057],{"class":4268},[3089,23732,6909],{"class":3099},[3089,23734,23735],{"class":4312},"_selectedUser",[3089,23737,4257],{"class":3099},[3089,23739,23740],{"class":3091,"line":3739},[3089,23741,21285],{"class":4268},[3089,23743,23744],{"class":3091,"line":3750},[3089,23745,5556],{"class":3099},[3089,23747,23748,23751,23753,23755],{"class":3091,"line":3763},[3089,23749,23750],{"class":4312},"            _selectedUser",[3089,23752,4488],{"class":3099},[3089,23754,6936],{"class":4312},[3089,23756,4257],{"class":3099},[3089,23758,23759,23761],{"class":3091,"line":3772},[3089,23760,21305],{"class":3095},[3089,23762,5728],{"class":3099},[3089,23764,23765],{"class":3091,"line":3781},[3089,23766,5584],{"class":3099},[3089,23768,23769],{"class":3091,"line":4190},[3089,23770,4389],{"class":3099},[3089,23772,23773],{"class":3091,"line":5750},[3089,23774,5024],{"class":3099},[3089,23776,23777,23779,23781],{"class":3091,"line":5755},[3089,23778,8043],{"class":4268},[3089,23780,19846],{"class":4268},[3089,23782,23783],{"class":4312}," CurrentPage\n",[3089,23785,23786],{"class":3091,"line":17433},[3089,23787,4321],{"class":3099},[3089,23789,23790,23792,23794,23797],{"class":3091,"line":17444},[3089,23791,8057],{"class":4268},[3089,23793,6909],{"class":3099},[3089,23795,23796],{"class":4312},"_currentPage",[3089,23798,4257],{"class":3099},[3089,23800,23801],{"class":3091,"line":17459},[3089,23802,21285],{"class":4268},[3089,23804,23805],{"class":3091,"line":17470},[3089,23806,5556],{"class":3099},[3089,23808,23809,23812,23814,23816],{"class":3091,"line":17479},[3089,23810,23811],{"class":4312},"            _currentPage",[3089,23813,4488],{"class":3099},[3089,23815,6936],{"class":4312},[3089,23817,4257],{"class":3099},[3089,23819,23820,23822],{"class":3091,"line":17488},[3089,23821,21305],{"class":3095},[3089,23823,5728],{"class":3099},[3089,23825,23826,23829],{"class":3091,"line":17497},[3089,23827,23828],{"class":3095},"            LoadPage",[3089,23830,5728],{"class":3099},[3089,23832,23833],{"class":3091,"line":17502},[3089,23834,5584],{"class":3099},[3089,23836,23837],{"class":3091,"line":17508},[3089,23838,4389],{"class":3099},[3089,23840,23841],{"class":3091,"line":17523},[3089,23842,5024],{"class":3099},[3089,23844,23845,23847,23849],{"class":3091,"line":17538},[3089,23846,8043],{"class":4268},[3089,23848,19846],{"class":4268},[3089,23850,23851],{"class":4312}," TotalPages\n",[3089,23853,23854],{"class":3091,"line":17554},[3089,23855,4321],{"class":3099},[3089,23857,23858,23860,23862,23865],{"class":3091,"line":17566},[3089,23859,8057],{"class":4268},[3089,23861,6909],{"class":3099},[3089,23863,23864],{"class":4312},"_totalPages",[3089,23866,4257],{"class":3099},[3089,23868,23869],{"class":3091,"line":17575},[3089,23870,21285],{"class":4268},[3089,23872,23873],{"class":3091,"line":17586},[3089,23874,5556],{"class":3099},[3089,23876,23877,23880,23882,23884],{"class":3091,"line":17591},[3089,23878,23879],{"class":4312},"            _totalPages",[3089,23881,4488],{"class":3099},[3089,23883,6936],{"class":4312},[3089,23885,4257],{"class":3099},[3089,23887,23888,23890],{"class":3091,"line":17597},[3089,23889,21305],{"class":3095},[3089,23891,5728],{"class":3099},[3089,23893,23894],{"class":3091,"line":17612},[3089,23895,5584],{"class":3099},[3089,23897,23898],{"class":3091,"line":17622},[3089,23899,4389],{"class":3099},[3089,23901,23902],{"class":3091,"line":17635},[3089,23903,5024],{"class":3099},[3089,23905,23906,23908,23910,23913,23915,23917],{"class":3091,"line":17641},[3089,23907,8043],{"class":4268},[3089,23909,21232],{"class":4249},[3089,23911,23912],{"class":4312}," AddUserCommand",[3089,23914,7859],{"class":3099},[3089,23916,7862],{"class":4268},[3089,23918,7871],{"class":3099},[3089,23920,23921,23923,23925,23928,23930,23932],{"class":3091,"line":17656},[3089,23922,8043],{"class":4268},[3089,23924,21232],{"class":4249},[3089,23926,23927],{"class":4312}," EditUserCommand",[3089,23929,7859],{"class":3099},[3089,23931,7862],{"class":4268},[3089,23933,7871],{"class":3099},[3089,23935,23936,23938,23940,23943,23945,23947],{"class":3091,"line":17668},[3089,23937,8043],{"class":4268},[3089,23939,21232],{"class":4249},[3089,23941,23942],{"class":4312}," DeleteUserCommand",[3089,23944,7859],{"class":3099},[3089,23946,7862],{"class":4268},[3089,23948,7871],{"class":3099},[3089,23950,23951],{"class":3091,"line":17678},[3089,23952,5024],{"class":3099},[3089,23954,23955,23957,23959],{"class":3091,"line":17690},[3089,23956,8043],{"class":4268},[3089,23958,23540],{"class":3095},[3089,23960,6962],{"class":3099},[3089,23962,23963],{"class":3091,"line":17699},[3089,23964,4321],{"class":3099},[3089,23966,23967,23970,23972,23974,23976,23978,23981],{"class":3091,"line":17710},[3089,23968,23969],{"class":4312},"        AddUserCommand",[3089,23971,4488],{"class":3099},[3089,23973,7898],{"class":4268},[3089,23975,21361],{"class":4249},[3089,23977,4306],{"class":3099},[3089,23979,23980],{"class":4312},"AddUser",[3089,23982,4339],{"class":3099},[3089,23984,23985,23988,23990,23992,23994,23996,23998,24000,24003],{"class":3091,"line":17728},[3089,23986,23987],{"class":4312},"        EditUserCommand",[3089,23989,4488],{"class":3099},[3089,23991,7898],{"class":4268},[3089,23993,21361],{"class":4249},[3089,23995,3178],{"class":3099},[3089,23997,23559],{"class":4249},[3089,23999,5851],{"class":3099},[3089,24001,24002],{"class":4312},"EditUser",[3089,24004,4339],{"class":3099},[3089,24006,24007,24010,24012,24014,24016,24018,24020,24022,24025],{"class":3091,"line":17743},[3089,24008,24009],{"class":4312},"        DeleteUserCommand",[3089,24011,4488],{"class":3099},[3089,24013,7898],{"class":4268},[3089,24015,21361],{"class":4249},[3089,24017,3178],{"class":3099},[3089,24019,23559],{"class":4249},[3089,24021,5851],{"class":3099},[3089,24023,24024],{"class":4312},"DeleteUser",[3089,24026,4339],{"class":3099},[3089,24028,24029],{"class":3091,"line":17758},[3089,24030,3875],{"class":3099},[3089,24032,24033,24035],{"class":3091,"line":17768},[3089,24034,19536],{"class":3095},[3089,24036,5728],{"class":3099},[3089,24038,24039],{"class":3091,"line":17774},[3089,24040,4389],{"class":3099},[3089,24042,24043],{"class":3091,"line":17789},[3089,24044,5024],{"class":3099},[3089,24046,24047,24049,24051,24053],{"class":3091,"line":17800},[3089,24048,8030],{"class":4268},[3089,24050,4300],{"class":4268},[3089,24052,19555],{"class":3095},[3089,24054,6962],{"class":3099},[3089,24056,24057],{"class":3091,"line":17812},[3089,24058,4321],{"class":3099},[3089,24060,24061],{"class":3091,"line":17817},[3089,24062,24063],{"class":3279},"        // Симуляція завантаження даних\n",[3089,24065,24066,24069,24071,24073,24075,24077,24079],{"class":3091,"line":17833},[3089,24067,24068],{"class":4312},"        _allUsers",[3089,24070,4488],{"class":3099},[3089,24072,7898],{"class":4268},[3089,24074,7846],{"class":4249},[3089,24076,3178],{"class":3099},[3089,24078,23559],{"class":4249},[3089,24080,21349],{"class":3099},[3089,24082,24083,24086,24088,24090,24093,24095,24097,24099,24102,24105,24108,24110,24112],{"class":3091,"line":17846},[3089,24084,24085],{"class":4245},"        for",[3089,24087,4829],{"class":3099},[3089,24089,11759],{"class":4268},[3089,24091,24092],{"class":4312}," i",[3089,24094,4488],{"class":3099},[3089,24096,19600],{"class":4844},[3089,24098,7865],{"class":3099},[3089,24100,24101],{"class":4312},"i",[3089,24103,24104],{"class":3099}," \u003C= ",[3089,24106,24107],{"class":4844},"100",[3089,24109,7865],{"class":3099},[3089,24111,24101],{"class":4312},[3089,24113,24114],{"class":3099},"++)\n",[3089,24116,24117],{"class":3091,"line":17856},[3089,24118,5556],{"class":3099},[3089,24120,24121,24124,24126,24128,24130,24132],{"class":3091,"line":17866},[3089,24122,24123],{"class":4312},"            _allUsers",[3089,24125,3454],{"class":3099},[3089,24127,21416],{"class":3095},[3089,24129,4306],{"class":3099},[3089,24131,7898],{"class":4268},[3089,24133,24134],{"class":4249}," User\n",[3089,24136,24137],{"class":3091,"line":17878},[3089,24138,8154],{"class":3099},[3089,24140,24141,24144,24146,24148],{"class":3091,"line":17883},[3089,24142,24143],{"class":4312},"                Id",[3089,24145,4488],{"class":3099},[3089,24147,24101],{"class":4312},[3089,24149,11891],{"class":3099},[3089,24151,24152,24155,24157,24160,24164,24166,24169,24172],{"class":3091,"line":17904},[3089,24153,24154],{"class":4312},"                Name",[3089,24156,4488],{"class":3099},[3089,24158,24159],{"class":3118},"$\"Користувач ",[3089,24161,24163],{"class":24162},"sD7JJ","{",[3089,24165,24101],{"class":4312},[3089,24167,24168],{"class":24162},"}",[3089,24170,24171],{"class":3118},"\"",[3089,24173,11891],{"class":3099},[3089,24175,24176,24179,24181,24184,24186,24188,24190,24193],{"class":3091,"line":17920},[3089,24177,24178],{"class":4312},"                Email",[3089,24180,4488],{"class":3099},[3089,24182,24183],{"class":3118},"$\"user",[3089,24185,24163],{"class":24162},[3089,24187,24101],{"class":4312},[3089,24189,24168],{"class":24162},[3089,24191,24192],{"class":3118},"@example.com\"",[3089,24194,11891],{"class":3099},[3089,24196,24197,24200,24202,24204,24207,24209,24211,24213,24215,24217,24219,24221,24223,24225,24227,24229,24231,24233,24235,24237],{"class":3091,"line":17932},[3089,24198,24199],{"class":4312},"                Role",[3089,24201,4488],{"class":3099},[3089,24203,24101],{"class":4312},[3089,24205,24206],{"class":3099}," % ",[3089,24208,19736],{"class":4844},[3089,24210,4841],{"class":3099},[3089,24212,4845],{"class":4844},[3089,24214,5699],{"class":3099},[3089,24216,22522],{"class":3118},[3089,24218,4281],{"class":3099},[3089,24220,24101],{"class":4312},[3089,24222,24206],{"class":3099},[3089,24224,19673],{"class":4844},[3089,24226,4841],{"class":3099},[3089,24228,4845],{"class":4844},[3089,24230,5699],{"class":3099},[3089,24232,19215],{"class":3118},[3089,24234,4281],{"class":3099},[3089,24236,22551],{"class":3118},[3089,24238,11891],{"class":3099},[3089,24240,24241,24244,24246,24248,24250,24253,24255,24257,24259,24262,24264,24267],{"class":3091,"line":17948},[3089,24242,24243],{"class":4312},"                Status",[3089,24245,4488],{"class":3099},[3089,24247,24101],{"class":4312},[3089,24249,24206],{"class":3099},[3089,24251,24252],{"class":4844},"5",[3089,24254,4841],{"class":3099},[3089,24256,4845],{"class":4844},[3089,24258,5699],{"class":3099},[3089,24260,24261],{"class":3118},"\"Неактивний\"",[3089,24263,4281],{"class":3099},[3089,24265,24266],{"class":3118},"\"Активний\"",[3089,24268,11891],{"class":3099},[3089,24270,24271,24274,24276,24278,24280,24282,24284,24286,24288,24290,24293,24295],{"class":3091,"line":17960},[3089,24272,24273],{"class":4312},"                RegisteredDate",[3089,24275,4488],{"class":3099},[3089,24277,19630],{"class":4312},[3089,24279,3454],{"class":3099},[3089,24281,19635],{"class":4312},[3089,24283,3454],{"class":3099},[3089,24285,19640],{"class":3095},[3089,24287,19643],{"class":3099},[3089,24289,24101],{"class":4312},[3089,24291,24292],{"class":3099}," * ",[3089,24294,21465],{"class":4844},[3089,24296,4316],{"class":3099},[3089,24298,24299],{"class":3091,"line":17976},[3089,24300,21880],{"class":3099},[3089,24302,24303],{"class":3091,"line":17986},[3089,24304,5584],{"class":3099},[3089,24306,24307],{"class":3091,"line":17998},[3089,24308,3875],{"class":3099},[3089,24310,24311,24314],{"class":3091,"line":18007},[3089,24312,24313],{"class":3095},"        ApplyFilters",[3089,24315,5728],{"class":3099},[3089,24317,24318],{"class":3091,"line":18017},[3089,24319,4389],{"class":3099},[3089,24321,24322],{"class":3091,"line":18026},[3089,24323,5024],{"class":3099},[3089,24325,24326,24328,24330,24333],{"class":3091,"line":18032},[3089,24327,8030],{"class":4268},[3089,24329,4300],{"class":4268},[3089,24331,24332],{"class":3095}," ApplyFilters",[3089,24334,6962],{"class":3099},[3089,24336,24337],{"class":3091,"line":18038},[3089,24338,4321],{"class":3099},[3089,24340,24341,24343,24346,24348,24350,24352,24355],{"class":3091,"line":18053},[3089,24342,5511],{"class":4268},[3089,24344,24345],{"class":4312}," filtered",[3089,24347,4488],{"class":3099},[3089,24349,23564],{"class":4312},[3089,24351,3454],{"class":3099},[3089,24353,24354],{"class":3095},"AsEnumerable",[3089,24356,5728],{"class":3099},[3089,24358,24359],{"class":3091,"line":18064},[3089,24360,3875],{"class":3099},[3089,24362,24363],{"class":3091,"line":18073},[3089,24364,24365],{"class":3279},"        // Фільтр за пошуком\n",[3089,24367,24368,24370,24372,24374,24376,24378,24380,24383],{"class":3091,"line":18084},[3089,24369,5540],{"class":4245},[3089,24371,8191],{"class":3099},[3089,24373,5848],{"class":4268},[3089,24375,3454],{"class":3099},[3089,24377,21656],{"class":3095},[3089,24379,4306],{"class":3099},[3089,24381,24382],{"class":4312},"_searchText",[3089,24384,8149],{"class":3099},[3089,24386,24387],{"class":3091,"line":18093},[3089,24388,5556],{"class":3099},[3089,24390,24391,24394,24396,24399,24401,24404,24406,24409],{"class":3091,"line":18102},[3089,24392,24393],{"class":4312},"            filtered",[3089,24395,4488],{"class":3099},[3089,24397,24398],{"class":4312},"filtered",[3089,24400,3454],{"class":3099},[3089,24402,24403],{"class":3095},"Where",[3089,24405,4306],{"class":3099},[3089,24407,24408],{"class":4312},"u",[3089,24410,24411],{"class":3099}," => \n",[3089,24413,24414,24417,24419,24421,24423,24425,24427,24429,24431,24434,24436,24439],{"class":3091,"line":18117},[3089,24415,24416],{"class":4312},"                u",[3089,24418,3454],{"class":3099},[3089,24420,7923],{"class":4312},[3089,24422,3454],{"class":3099},[3089,24424,8198],{"class":3095},[3089,24426,4306],{"class":3099},[3089,24428,24382],{"class":4312},[3089,24430,4789],{"class":3099},[3089,24432,24433],{"class":4312},"StringComparison",[3089,24435,3454],{"class":3099},[3089,24437,24438],{"class":4312},"OrdinalIgnoreCase",[3089,24440,24441],{"class":3099},") ||\n",[3089,24443,24444,24446,24448,24450,24452,24454,24456,24458,24460,24462,24464,24466],{"class":3091,"line":18132},[3089,24445,24416],{"class":4312},[3089,24447,3454],{"class":3099},[3089,24449,8146],{"class":4312},[3089,24451,3454],{"class":3099},[3089,24453,8198],{"class":3095},[3089,24455,4306],{"class":3099},[3089,24457,24382],{"class":4312},[3089,24459,4789],{"class":3099},[3089,24461,24433],{"class":4312},[3089,24463,3454],{"class":3099},[3089,24465,24438],{"class":4312},[3089,24467,11108],{"class":3099},[3089,24469,24470],{"class":3091,"line":18147},[3089,24471,5584],{"class":3099},[3089,24473,24474],{"class":3091,"line":18156},[3089,24475,3875],{"class":3099},[3089,24477,24478],{"class":3091,"line":18161},[3089,24479,24480],{"class":3279},"        // Фільтр за роллю\n",[3089,24482,24483,24485,24487,24489,24491,24493,24495,24498,24501,24503,24506,24508],{"class":3091,"line":18177},[3089,24484,5540],{"class":4245},[3089,24486,8191],{"class":3099},[3089,24488,5848],{"class":4268},[3089,24490,3454],{"class":3099},[3089,24492,21656],{"class":3095},[3089,24494,4306],{"class":3099},[3089,24496,24497],{"class":4312},"_roleFilter",[3089,24499,24500],{"class":3099},") && ",[3089,24502,24497],{"class":4312},[3089,24504,24505],{"class":3099}," != ",[3089,24507,22507],{"class":3118},[3089,24509,4316],{"class":3099},[3089,24511,24512],{"class":3091,"line":18186},[3089,24513,5556],{"class":3099},[3089,24515,24516,24518,24520,24522,24524,24526,24528,24530,24532,24534,24536,24539,24541,24543],{"class":3091,"line":18197},[3089,24517,24393],{"class":4312},[3089,24519,4488],{"class":3099},[3089,24521,24398],{"class":4312},[3089,24523,3454],{"class":3099},[3089,24525,24403],{"class":3095},[3089,24527,4306],{"class":3099},[3089,24529,24408],{"class":4312},[3089,24531,6909],{"class":3099},[3089,24533,24408],{"class":4312},[3089,24535,3454],{"class":3099},[3089,24537,24538],{"class":4312},"Role",[3089,24540,4841],{"class":3099},[3089,24542,24497],{"class":4312},[3089,24544,4339],{"class":3099},[3089,24546,24547],{"class":3091,"line":18202},[3089,24548,5584],{"class":3099},[3089,24550,24551],{"class":3091,"line":18217},[3089,24552,3875],{"class":3099},[3089,24554,24555,24557,24560,24562,24564,24566,24569],{"class":3091,"line":18229},[3089,24556,5511],{"class":4268},[3089,24558,24559],{"class":4312}," filteredList",[3089,24561,4488],{"class":3099},[3089,24563,24398],{"class":4312},[3089,24565,3454],{"class":3099},[3089,24567,24568],{"class":3095},"ToList",[3089,24570,5728],{"class":3099},[3089,24572,24573,24576,24579,24581,24584,24587,24589,24592,24594,24597,24599,24602,24605,24608],{"class":3091,"line":18238},[3089,24574,24575],{"class":4312},"        TotalPages",[3089,24577,24578],{"class":3099}," = (",[3089,24580,11759],{"class":4268},[3089,24582,24583],{"class":3099},")",[3089,24585,24586],{"class":4312},"Math",[3089,24588,3454],{"class":3099},[3089,24590,24591],{"class":3095},"Ceiling",[3089,24593,4306],{"class":3099},[3089,24595,24596],{"class":4312},"filteredList",[3089,24598,3454],{"class":3099},[3089,24600,24601],{"class":4312},"Count",[3089,24603,24604],{"class":3099}," / ",[3089,24606,24607],{"class":4844},"20.0",[3089,24609,4339],{"class":3099},[3089,24611,24612],{"class":3091,"line":18247},[3089,24613,3875],{"class":3099},[3089,24615,24616],{"class":3091,"line":18258},[3089,24617,24618],{"class":3279},"        // Пагінація\n",[3089,24620,24621,24624,24626,24628,24630,24632,24634],{"class":3091,"line":18263},[3089,24622,24623],{"class":4312},"        FilteredUsers",[3089,24625,4488],{"class":3099},[3089,24627,7898],{"class":4268},[3089,24629,7846],{"class":4249},[3089,24631,3178],{"class":3099},[3089,24633,23559],{"class":4249},[3089,24635,24636],{"class":3099},">(\n",[3089,24638,24639,24642,24644,24647,24650,24653,24656,24658,24661,24664,24666,24669,24671,24673],{"class":3091,"line":18284},[3089,24640,24641],{"class":4312},"            filteredList",[3089,24643,3454],{"class":3099},[3089,24645,24646],{"class":3095},"Skip",[3089,24648,24649],{"class":3099},"((",[3089,24651,24652],{"class":4312},"CurrentPage",[3089,24654,24655],{"class":3099}," - ",[3089,24657,19600],{"class":4844},[3089,24659,24660],{"class":3099},") * ",[3089,24662,24663],{"class":4844},"20",[3089,24665,21774],{"class":3099},[3089,24667,24668],{"class":3095},"Take",[3089,24670,4306],{"class":3099},[3089,24672,24663],{"class":4844},[3089,24674,11108],{"class":3099},[3089,24676,24677],{"class":3091,"line":18299},[3089,24678,4389],{"class":3099},[3089,24680,24681],{"class":3091,"line":18310},[3089,24682,5024],{"class":3099},[3089,24684,24685,24687,24689,24692],{"class":3091,"line":18325},[3089,24686,8030],{"class":4268},[3089,24688,4300],{"class":4268},[3089,24690,24691],{"class":3095}," LoadPage",[3089,24693,6962],{"class":3099},[3089,24695,24696],{"class":3091,"line":18336},[3089,24697,4321],{"class":3099},[3089,24699,24700,24702],{"class":3091,"line":18352},[3089,24701,24313],{"class":3095},[3089,24703,5728],{"class":3099},[3089,24705,24706],{"class":3091,"line":18361},[3089,24707,4389],{"class":3099},[3089,24709,24710],{"class":3091,"line":18372},[3089,24711,5024],{"class":3099},[3089,24713,24714,24716,24718,24721,24723,24725,24727],{"class":3091,"line":18381},[3089,24715,8043],{"class":4268},[3089,24717,4300],{"class":4268},[3089,24719,24720],{"class":3095}," Search",[3089,24722,4306],{"class":3099},[3089,24724,5848],{"class":4268},[3089,24726,7756],{"class":4312},[3089,24728,4316],{"class":3099},[3089,24730,24731],{"class":3091,"line":18390},[3089,24732,4321],{"class":3099},[3089,24734,24735,24738,24740,24743],{"class":3091,"line":18399},[3089,24736,24737],{"class":4312},"        _searchText",[3089,24739,4488],{"class":3099},[3089,24741,24742],{"class":4312},"searchText",[3089,24744,4257],{"class":3099},[3089,24746,24747,24750,24752,24754],{"class":3091,"line":18404},[3089,24748,24749],{"class":4312},"        CurrentPage",[3089,24751,4488],{"class":3099},[3089,24753,19600],{"class":4844},[3089,24755,4257],{"class":3099},[3089,24757,24758,24760],{"class":3091,"line":18410},[3089,24759,24313],{"class":3095},[3089,24761,5728],{"class":3099},[3089,24763,24764],{"class":3091,"line":18425},[3089,24765,4389],{"class":3099},[3089,24767,24768],{"class":3091,"line":18436},[3089,24769,5024],{"class":3099},[3089,24771,24772,24774,24776,24779,24781,24783,24786],{"class":3091,"line":18445},[3089,24773,8043],{"class":4268},[3089,24775,4300],{"class":4268},[3089,24777,24778],{"class":3095}," FilterByRole",[3089,24780,4306],{"class":3099},[3089,24782,5848],{"class":4268},[3089,24784,24785],{"class":4312}," role",[3089,24787,4316],{"class":3099},[3089,24789,24790],{"class":3091,"line":18456},[3089,24791,4321],{"class":3099},[3089,24793,24794,24797,24799,24802],{"class":3091,"line":18465},[3089,24795,24796],{"class":4312},"        _roleFilter",[3089,24798,4488],{"class":3099},[3089,24800,24801],{"class":4312},"role",[3089,24803,4257],{"class":3099},[3089,24805,24806,24808,24810,24812],{"class":3091,"line":18474},[3089,24807,24749],{"class":4312},[3089,24809,4488],{"class":3099},[3089,24811,19600],{"class":4844},[3089,24813,4257],{"class":3099},[3089,24815,24816,24818],{"class":3091,"line":18489},[3089,24817,24313],{"class":3095},[3089,24819,5728],{"class":3099},[3089,24821,24822],{"class":3091,"line":18504},[3089,24823,4389],{"class":3099},[3089,24825,24826],{"class":3091,"line":18519},[3089,24827,5024],{"class":3099},[3089,24829,24830,24832,24834,24837],{"class":3091,"line":18528},[3089,24831,8030],{"class":4268},[3089,24833,4300],{"class":4268},[3089,24835,24836],{"class":3095}," AddUser",[3089,24838,6962],{"class":3099},[3089,24840,24841],{"class":3091,"line":18533},[3089,24842,4321],{"class":3099},[3089,24844,24845,24847,24850,24852,24854,24857],{"class":3091,"line":18549},[3089,24846,5511],{"class":4268},[3089,24848,24849],{"class":4312}," dialog",[3089,24851,4488],{"class":3099},[3089,24853,7898],{"class":4268},[3089,24855,24856],{"class":4249}," UserEditDialog",[3089,24858,5728],{"class":3099},[3089,24860,24861,24863,24865,24868,24870,24872,24875,24877],{"class":3091,"line":18558},[3089,24862,5540],{"class":4245},[3089,24864,4829],{"class":3099},[3089,24866,24867],{"class":4312},"dialog",[3089,24869,3454],{"class":3099},[3089,24871,11118],{"class":3095},[3089,24873,24874],{"class":3099},"() == ",[3089,24876,6976],{"class":4268},[3089,24878,4316],{"class":3099},[3089,24880,24881],{"class":3091,"line":18569},[3089,24882,5556],{"class":3099},[3089,24884,24885,24888,24891,24893,24895,24897,24899],{"class":3091,"line":18574},[3089,24886,24887],{"class":4268},"            var",[3089,24889,24890],{"class":4312}," newUser",[3089,24892,4488],{"class":3099},[3089,24894,24867],{"class":4312},[3089,24896,3454],{"class":3099},[3089,24898,23559],{"class":4312},[3089,24900,4257],{"class":3099},[3089,24902,24903,24906,24908,24910,24912,24914,24916,24919,24921,24923,24925,24927,24929,24931,24934,24936],{"class":3091,"line":18589},[3089,24904,24905],{"class":4312},"            newUser",[3089,24907,3454],{"class":3099},[3089,24909,19595],{"class":4312},[3089,24911,4488],{"class":3099},[3089,24913,23564],{"class":4312},[3089,24915,3454],{"class":3099},[3089,24917,24918],{"class":3095},"Max",[3089,24920,4306],{"class":3099},[3089,24922,24408],{"class":4312},[3089,24924,6909],{"class":3099},[3089,24926,24408],{"class":4312},[3089,24928,3454],{"class":3099},[3089,24930,19595],{"class":4312},[3089,24932,24933],{"class":3099},") + ",[3089,24935,19600],{"class":4844},[3089,24937,4257],{"class":3099},[3089,24939,24940,24942,24944,24946,24948,24951],{"class":3091,"line":18601},[3089,24941,24123],{"class":4312},[3089,24943,3454],{"class":3099},[3089,24945,21416],{"class":3095},[3089,24947,4306],{"class":3099},[3089,24949,24950],{"class":4312},"newUser",[3089,24952,4339],{"class":3099},[3089,24954,24955,24958],{"class":3091,"line":18610},[3089,24956,24957],{"class":3095},"            ApplyFilters",[3089,24959,5728],{"class":3099},[3089,24961,24962],{"class":3091,"line":18619},[3089,24963,3632],{"class":3099},[3089,24965,24966,24969,24971,24973,24975,24978,24980,24982,24984,24986,24988,24991],{"class":3091,"line":18630},[3089,24967,24968],{"class":4312},"            Growl",[3089,24970,3454],{"class":3099},[3089,24972,15234],{"class":3095},[3089,24974,4306],{"class":3099},[3089,24976,24977],{"class":3118},"$\"Користувача ",[3089,24979,24163],{"class":24162},[3089,24981,24950],{"class":4312},[3089,24983,3454],{"class":24162},[3089,24985,7923],{"class":4312},[3089,24987,24168],{"class":24162},[3089,24989,24990],{"class":3118}," додано успішно!\"",[3089,24992,4339],{"class":3099},[3089,24994,24995],{"class":3091,"line":18635},[3089,24996,5584],{"class":3099},[3089,24998,24999],{"class":3091,"line":18656},[3089,25000,4389],{"class":3099},[3089,25002,25003],{"class":3091,"line":18672},[3089,25004,5024],{"class":3099},[3089,25006,25007,25009,25011,25014,25016,25018,25021],{"class":3091,"line":18684},[3089,25008,8030],{"class":4268},[3089,25010,4300],{"class":4268},[3089,25012,25013],{"class":3095}," EditUser",[3089,25015,4306],{"class":3099},[3089,25017,23559],{"class":4249},[3089,25019,25020],{"class":4312}," user",[3089,25022,4316],{"class":3099},[3089,25024,25025],{"class":3091,"line":18699},[3089,25026,4321],{"class":3099},[3089,25028,25029,25031,25033,25035,25037,25039,25041,25044],{"class":3091,"line":18710},[3089,25030,5511],{"class":4268},[3089,25032,24849],{"class":4312},[3089,25034,4488],{"class":3099},[3089,25036,7898],{"class":4268},[3089,25038,24856],{"class":4249},[3089,25040,4306],{"class":3099},[3089,25042,25043],{"class":4312},"user",[3089,25045,4339],{"class":3099},[3089,25047,25048,25050,25052,25054,25056,25058,25060,25062],{"class":3091,"line":18726},[3089,25049,5540],{"class":4245},[3089,25051,4829],{"class":3099},[3089,25053,24867],{"class":4312},[3089,25055,3454],{"class":3099},[3089,25057,11118],{"class":3095},[3089,25059,24874],{"class":3099},[3089,25061,6976],{"class":4268},[3089,25063,4316],{"class":3099},[3089,25065,25066],{"class":3091,"line":18735},[3089,25067,5556],{"class":3099},[3089,25069,25070,25072,25075,25077,25079,25081,25084,25086,25088],{"class":3091,"line":18746},[3089,25071,24887],{"class":4268},[3089,25073,25074],{"class":4312}," index",[3089,25076,4488],{"class":3099},[3089,25078,23564],{"class":4312},[3089,25080,3454],{"class":3099},[3089,25082,25083],{"class":3095},"IndexOf",[3089,25085,4306],{"class":3099},[3089,25087,25043],{"class":4312},[3089,25089,4339],{"class":3099},[3089,25091,25092,25094,25096,25099,25102,25104,25106,25108],{"class":3091,"line":18755},[3089,25093,24123],{"class":4312},[3089,25095,8105],{"class":3099},[3089,25097,25098],{"class":4312},"index",[3089,25100,25101],{"class":3099},"] = ",[3089,25103,24867],{"class":4312},[3089,25105,3454],{"class":3099},[3089,25107,23559],{"class":4312},[3089,25109,4257],{"class":3099},[3089,25111,25112,25114],{"class":3091,"line":18764},[3089,25113,24957],{"class":3095},[3089,25115,5728],{"class":3099},[3089,25117,25118],{"class":3091,"line":18773},[3089,25119,3632],{"class":3099},[3089,25121,25122,25124,25126,25128,25130,25132,25134,25136,25138,25140,25142,25145],{"class":3091,"line":18782},[3089,25123,24968],{"class":4312},[3089,25125,3454],{"class":3099},[3089,25127,15234],{"class":3095},[3089,25129,4306],{"class":3099},[3089,25131,24977],{"class":3118},[3089,25133,24163],{"class":24162},[3089,25135,25043],{"class":4312},[3089,25137,3454],{"class":24162},[3089,25139,7923],{"class":4312},[3089,25141,24168],{"class":24162},[3089,25143,25144],{"class":3118}," оновлено успішно!\"",[3089,25146,4339],{"class":3099},[3089,25148,25149],{"class":3091,"line":18787},[3089,25150,5584],{"class":3099},[3089,25152,25153],{"class":3091,"line":18793},[3089,25154,4389],{"class":3099},[3089,25156,25157],{"class":3091,"line":18808},[3089,25158,5024],{"class":3099},[3089,25160,25161,25163,25165,25168,25170,25172,25174],{"class":3091,"line":18818},[3089,25162,8030],{"class":4268},[3089,25164,4300],{"class":4268},[3089,25166,25167],{"class":3095}," DeleteUser",[3089,25169,4306],{"class":3099},[3089,25171,23559],{"class":4249},[3089,25173,25020],{"class":4312},[3089,25175,4316],{"class":3099},[3089,25177,25178],{"class":3091,"line":18830},[3089,25179,4321],{"class":3099},[3089,25181,25182,25184,25186,25188,25190,25192,25195,25197,25200,25202,25204],{"class":3091,"line":18839},[3089,25183,5511],{"class":4268},[3089,25185,11859],{"class":4312},[3089,25187,4488],{"class":3099},[3089,25189,7724],{"class":4312},[3089,25191,3454],{"class":3099},[3089,25193,25194],{"class":4312},"Controls",[3089,25196,3454],{"class":3099},[3089,25198,25199],{"class":4312},"MessageBox",[3089,25201,3454],{"class":3099},[3089,25203,11836],{"class":3095},[3089,25205,25206],{"class":3099},"(\n",[3089,25208,25209,25212,25214,25216,25218,25220,25222,25225],{"class":3091,"line":18855},[3089,25210,25211],{"class":3118},"            $\"Ви впевнені, що хочете видалити користувача ",[3089,25213,24163],{"class":24162},[3089,25215,25043],{"class":4312},[3089,25217,3454],{"class":24162},[3089,25219,7923],{"class":4312},[3089,25221,24168],{"class":24162},[3089,25223,25224],{"class":3118},"?\"",[3089,25226,11891],{"class":3099},[3089,25228,25229,25232],{"class":3091,"line":18867},[3089,25230,25231],{"class":3118},"            \"Підтвердження видалення\"",[3089,25233,11891],{"class":3099},[3089,25235,25236,25239,25241,25243],{"class":3091,"line":18877},[3089,25237,25238],{"class":4312},"            MessageBoxButton",[3089,25240,3454],{"class":3099},[3089,25242,11918],{"class":4312},[3089,25244,11891],{"class":3099},[3089,25246,25247,25250,25252,25254],{"class":3091,"line":18889},[3089,25248,25249],{"class":4312},"            MessageBoxImage",[3089,25251,3454],{"class":3099},[3089,25253,15283],{"class":4312},[3089,25255,4339],{"class":3099},[3089,25257,25258],{"class":3091,"line":18895},[3089,25259,3875],{"class":3099},[3089,25261,25262,25264,25266,25268,25270,25272,25274,25276],{"class":3091,"line":18901},[3089,25263,5540],{"class":4245},[3089,25265,4829],{"class":3099},[3089,25267,11970],{"class":4312},[3089,25269,4841],{"class":3099},[3089,25271,11975],{"class":4312},[3089,25273,3454],{"class":3099},[3089,25275,11980],{"class":4312},[3089,25277,4316],{"class":3099},[3089,25279,25280],{"class":3091,"line":18916},[3089,25281,5556],{"class":3099},[3089,25283,25284,25286,25288,25291,25293,25295],{"class":3091,"line":18926},[3089,25285,24123],{"class":4312},[3089,25287,3454],{"class":3099},[3089,25289,25290],{"class":3095},"Remove",[3089,25292,4306],{"class":3099},[3089,25294,25043],{"class":4312},[3089,25296,4339],{"class":3099},[3089,25298,25299,25301],{"class":3091,"line":18938},[3089,25300,24957],{"class":3095},[3089,25302,5728],{"class":3099},[3089,25304,25305],{"class":3091,"line":18954},[3089,25306,3632],{"class":3099},[3089,25308,25309,25311,25313,25315,25317,25319,25321,25323,25325,25327,25329,25332],{"class":3091,"line":18966},[3089,25310,24968],{"class":4312},[3089,25312,3454],{"class":3099},[3089,25314,15234],{"class":3095},[3089,25316,4306],{"class":3099},[3089,25318,24977],{"class":3118},[3089,25320,24163],{"class":24162},[3089,25322,25043],{"class":4312},[3089,25324,3454],{"class":24162},[3089,25326,7923],{"class":4312},[3089,25328,24168],{"class":24162},[3089,25330,25331],{"class":3118}," видалено успішно!\"",[3089,25333,4339],{"class":3099},[3089,25335,25336],{"class":3091,"line":18976},[3089,25337,5584],{"class":3099},[3089,25339,25340],{"class":3091,"line":18987},[3089,25341,4389],{"class":3099},[3089,25343,25344],{"class":3091,"line":18996},[3089,25345,5024],{"class":3099},[3089,25347,25348,25350,25352,25354,25356],{"class":3091,"line":19005},[3089,25349,8043],{"class":4268},[3089,25351,19810],{"class":4268},[3089,25353,19813],{"class":4249},[3089,25355,19816],{"class":4312},[3089,25357,4257],{"class":3099},[3089,25359,25360,25362,25364,25366,25368,25370,25372,25374,25376,25378,25380],{"class":3091,"line":19014},[3089,25361,4294],{"class":4268},[3089,25363,4300],{"class":4268},[3089,25365,21913],{"class":3095},[3089,25367,21916],{"class":3099},[3089,25369,21919],{"class":4249},[3089,25371,21922],{"class":3099},[3089,25373,5848],{"class":4268},[3089,25375,21927],{"class":4312},[3089,25377,4488],{"class":3099},[3089,25379,8255],{"class":4268},[3089,25381,4316],{"class":3099},[3089,25383,25384],{"class":3091,"line":19019},[3089,25385,4321],{"class":3099},[3089,25387,25388,25390,25392,25394,25396,25398,25400,25402,25404,25406,25408],{"class":3091,"line":19025},[3089,25389,21942],{"class":4312},[3089,25391,4835],{"class":3099},[3089,25393,21807],{"class":3095},[3089,25395,4306],{"class":3099},[3089,25397,21951],{"class":4268},[3089,25399,4789],{"class":3099},[3089,25401,7898],{"class":4268},[3089,25403,21958],{"class":4249},[3089,25405,4306],{"class":3099},[3089,25407,21963],{"class":4312},[3089,25409,11108],{"class":3099},[3089,25411,25412],{"class":3091,"line":19040},[3089,25413,4389],{"class":3099},[3089,25415,25416],{"class":3091,"line":19051},[3089,25417,4394],{"class":3099},[3089,25419,25420],{"class":3091,"line":19060},[3089,25421,4263],{"emptyLinePlaceholder":4262},[3089,25423,25424,25426,25428],{"class":3091,"line":19076},[3089,25425,4269],{"class":4268},[3089,25427,4275],{"class":4268},[3089,25429,24134],{"class":4249},[3089,25431,25432],{"class":3091,"line":19087},[3089,25433,4289],{"class":3099},[3089,25435,25436,25438,25440,25442,25444,25446,25448,25450],{"class":3091,"line":19096},[3089,25437,8043],{"class":4268},[3089,25439,19846],{"class":4268},[3089,25441,14850],{"class":4312},[3089,25443,7859],{"class":3099},[3089,25445,7862],{"class":4268},[3089,25447,7865],{"class":3099},[3089,25449,7868],{"class":4268},[3089,25451,7871],{"class":3099},[3089,25453,25454,25456,25458,25460,25462,25464,25466,25468],{"class":3091,"line":19107},[3089,25455,8043],{"class":4268},[3089,25457,8033],{"class":4268},[3089,25459,12043],{"class":4312},[3089,25461,7859],{"class":3099},[3089,25463,7862],{"class":4268},[3089,25465,7865],{"class":3099},[3089,25467,7868],{"class":4268},[3089,25469,7871],{"class":3099},[3089,25471,25472,25474,25476,25478,25480,25482,25484,25486],{"class":3091,"line":19112},[3089,25473,8043],{"class":4268},[3089,25475,8033],{"class":4268},[3089,25477,13461],{"class":4312},[3089,25479,7859],{"class":3099},[3089,25481,7862],{"class":4268},[3089,25483,7865],{"class":3099},[3089,25485,7868],{"class":4268},[3089,25487,7871],{"class":3099},[3089,25489,25490,25492,25494,25496,25498,25500,25502,25504],{"class":3091,"line":19126},[3089,25491,8043],{"class":4268},[3089,25493,8033],{"class":4268},[3089,25495,16469],{"class":4312},[3089,25497,7859],{"class":3099},[3089,25499,7862],{"class":4268},[3089,25501,7865],{"class":3099},[3089,25503,7868],{"class":4268},[3089,25505,7871],{"class":3099},[3089,25507,25508,25510,25512,25514,25516,25518,25520,25522],{"class":3091,"line":19136},[3089,25509,8043],{"class":4268},[3089,25511,8033],{"class":4268},[3089,25513,19925],{"class":4312},[3089,25515,7859],{"class":3099},[3089,25517,7862],{"class":4268},[3089,25519,7865],{"class":3099},[3089,25521,7868],{"class":4268},[3089,25523,7871],{"class":3099},[3089,25525,25526,25528,25530,25533,25535,25537,25539,25541],{"class":3091,"line":19146},[3089,25527,8043],{"class":4268},[3089,25529,19903],{"class":4249},[3089,25531,25532],{"class":4312}," RegisteredDate",[3089,25534,7859],{"class":3099},[3089,25536,7862],{"class":4268},[3089,25538,7865],{"class":3099},[3089,25540,7868],{"class":4268},[3089,25542,7871],{"class":3099},[3089,25544,25545],{"class":3091,"line":19156},[3089,25546,4394],{"class":3099},[2959,25548,25550],{"id":25549},"міграція-та-інтеграція","Міграція та інтеграція",[3000,25552,25554],{"id":25553},"міграція-з-стандартного-wpf","Міграція з стандартного WPF",[2964,25556,25557],{},"Міграція існуючого WPF додатку на HandyControl — це поступовий процес, який можна виконувати інкрементально.",[2964,25559,25560],{},[2983,25561,25562],{},"Крок 1: Установка HandyControl",[3079,25564,25565],{"className":3106,"code":3107,"language":3108,"meta":3084,"style":3084},[3086,25566,25567],{"__ignoreMap":3084},[3089,25568,25569,25571,25573,25575],{"class":3091,"line":3092},[3089,25570,3115],{"class":3095},[3089,25572,3119],{"class":3118},[3089,25574,3122],{"class":3118},[3089,25576,3100],{"class":3118},[2964,25578,25579],{},[2983,25580,25581],{},"Крок 2: Підключення тем у App.xaml",[3079,25583,25585],{"className":3168,"code":25584,"language":3170,"meta":3084,"style":3084},"\u003CApplication.Resources>\n    \u003CResourceDictionary>\n        \u003CResourceDictionary.MergedDictionaries>\n            \u003Chc:ThemeResources/>\n            \u003Chc:Theme/>\n        \u003C/ResourceDictionary.MergedDictionaries>\n    \u003C/ResourceDictionary>\n\u003C/Application.Resources>\n",[3086,25586,25587,25595,25603,25611,25619,25627,25635,25643],{"__ignoreMap":3084},[3089,25588,25589,25591,25593],{"class":3091,"line":3092},[3089,25590,3178],{"class":3177},[3089,25592,3249],{"class":3181},[3089,25594,3240],{"class":3177},[3089,25596,25597,25599,25601],{"class":3091,"line":3196},[3089,25598,3246],{"class":3177},[3089,25600,3260],{"class":3181},[3089,25602,3240],{"class":3177},[3089,25604,25605,25607,25609],{"class":3091,"line":3207},[3089,25606,3257],{"class":3177},[3089,25608,3271],{"class":3181},[3089,25610,3240],{"class":3177},[3089,25612,25613,25615,25617],{"class":3091,"line":3218},[3089,25614,3268],{"class":3177},[3089,25616,3289],{"class":3181},[3089,25618,3292],{"class":3177},[3089,25620,25621,25623,25625],{"class":3091,"line":3229},[3089,25622,3268],{"class":3177},[3089,25624,3306],{"class":3181},[3089,25626,3292],{"class":3177},[3089,25628,25629,25631,25633],{"class":3091,"line":3243},[3089,25630,3324],{"class":3177},[3089,25632,3271],{"class":3181},[3089,25634,3240],{"class":3177},[3089,25636,25637,25639,25641],{"class":3091,"line":3254},[3089,25638,3334],{"class":3177},[3089,25640,3260],{"class":3181},[3089,25642,3240],{"class":3177},[3089,25644,25645,25647,25649],{"class":3091,"line":3265},[3089,25646,3344],{"class":3177},[3089,25648,3249],{"class":3181},[3089,25650,3240],{"class":3177},[2964,25652,25653],{},[2983,25654,25655],{},"Крок 3: Поступова заміна контролів",[2964,25657,25658],{},"Не потрібно замінювати всі контроли одразу. Почніть з найпростіших:",[3079,25660,25662],{"className":3168,"code":25661,"language":3170,"meta":3084,"style":3084},"\u003C!-- Було -->\n\u003CWindow>\n    \u003CButton Content=\"Зберегти\"/>\n\u003C/Window>\n\n\u003C!-- Стало -->\n\u003Chc:Window>\n    \u003Chc:Button Content=\"Зберегти\" Style=\"{StaticResource ButtonPrimary}\"/>\n\u003C/hc:Window>\n",[3086,25663,25664,25669,25677,25691,25699,25703,25708,25716,25736],{"__ignoreMap":3084},[3089,25665,25666],{"class":3091,"line":3092},[3089,25667,25668],{"class":3279},"\u003C!-- Було -->\n",[3089,25670,25671,25673,25675],{"class":3091,"line":3196},[3089,25672,3178],{"class":3177},[3089,25674,10653],{"class":3181},[3089,25676,3240],{"class":3177},[3089,25678,25679,25681,25683,25685,25687,25689],{"class":3091,"line":3207},[3089,25680,3246],{"class":3177},[3089,25682,4118],{"class":3181},[3089,25684,3729],{"class":3185},[3089,25686,3189],{"class":3099},[3089,25688,6788],{"class":3192},[3089,25690,3292],{"class":3177},[3089,25692,25693,25695,25697],{"class":3091,"line":3218},[3089,25694,3344],{"class":3177},[3089,25696,10653],{"class":3181},[3089,25698,3240],{"class":3177},[3089,25700,25701],{"class":3091,"line":3229},[3089,25702,4263],{"emptyLinePlaceholder":4262},[3089,25704,25705],{"class":3091,"line":3243},[3089,25706,25707],{"class":3279},"\u003C!-- Стало -->\n",[3089,25709,25710,25712,25714],{"class":3091,"line":3254},[3089,25711,3178],{"class":3177},[3089,25713,3479],{"class":3181},[3089,25715,3240],{"class":3177},[3089,25717,25718,25720,25722,25724,25726,25728,25730,25732,25734],{"class":3091,"line":3265},[3089,25719,3246],{"class":3177},[3089,25721,3726],{"class":3181},[3089,25723,3729],{"class":3185},[3089,25725,3189],{"class":3099},[3089,25727,6788],{"class":3192},[3089,25729,6237],{"class":3185},[3089,25731,3189],{"class":3099},[3089,25733,6242],{"class":3192},[3089,25735,3292],{"class":3177},[3089,25737,25738,25740,25742],{"class":3091,"line":3276},[3089,25739,3344],{"class":3177},[3089,25741,3479],{"class":3181},[3089,25743,3240],{"class":3177},[2964,25745,25746],{},[2983,25747,25748],{},"Крок 4: Додавання namespace",[2964,25750,25751],{},"Додайте namespace HandyControl до кожного файлу XAML:",[3079,25753,25755],{"className":3168,"code":25754,"language":3170,"meta":3084,"style":3084},"xmlns:hc=\"https://handyorg.github.io/handycontrol\"\n",[3086,25756,25757],{"__ignoreMap":3084},[3089,25758,25759],{"class":3091,"line":3092},[3089,25760,25754],{"class":3099},[2964,25762,25763],{},[2983,25764,25765],{},"Типові проблеми при міграції:",[4201,25767,25768,25778,25784],{},[3011,25769,25770,25773,25774,25777],{},[2983,25771,25772],{},"Конфлікти стилів"," — HandyControl може перевизначити стандартні стилі WPF. Рішення: використовуйте ",[3086,25775,25776],{},"BasedOn"," для власних стилів.",[3011,25779,25780,25783],{},[2983,25781,25782],{},"Розмір додатку"," — HandyControl додає ~5-8 MB до розміру. Рішення: використовуйте trimming при публікації.",[3011,25785,25786,25789],{},[2983,25787,25788],{},"Performance"," — деякі контроли HandyControl важчі за стандартні WPF. Рішення: використовуйте virtualization для списків.",[3000,25791,25793],{"id":25792},"інтеграція-з-mvvm","Інтеграція з MVVM",[2964,25795,25796],{},"HandyControl добре працює з MVVM pattern. Всі контроли підтримують data binding та commands.",[2964,25798,25799,3165],{},[2983,25800,25801],{},"Приклад з CommunityToolkit.Mvvm",[3079,25803,25805],{"className":4236,"code":25804,"language":4238,"meta":3084,"style":3084},"using CommunityToolkit.Mvvm.ComponentModel;\nusing CommunityToolkit.Mvvm.Input;\n\npublic partial class MainViewModel : ObservableObject\n{\n    [ObservableProperty]\n    private string _userName;\n    \n    [ObservableProperty]\n    private bool _isLoading;\n    \n    [RelayCommand]\n    private async Task SaveAsync()\n    {\n        IsLoading = true;\n        try\n        {\n            await SaveDataAsync();\n            Growl.Success(\"Дані збережено успішно!\");\n        }\n        catch (Exception ex)\n        {\n            Growl.Error($\"Помилка: {ex.Message}\");\n        }\n        finally\n        {\n            IsLoading = false;\n        }\n    }\n}\n",[3086,25806,25807,25826,25843,25847,25862,25866,25875,25886,25890,25898,25908,25912,25921,25934,25938,25948,25953,25957,25967,25981,25985,26000,26004,26033,26037,26042,26046,26057,26061,26065],{"__ignoreMap":3084},[3089,25808,25809,25811,25814,25816,25819,25821,25824],{"class":3091,"line":3092},[3089,25810,4246],{"class":4245},[3089,25812,25813],{"class":4249}," CommunityToolkit",[3089,25815,3454],{"class":3099},[3089,25817,25818],{"class":4249},"Mvvm",[3089,25820,3454],{"class":3099},[3089,25822,25823],{"class":4249},"ComponentModel",[3089,25825,4257],{"class":3099},[3089,25827,25828,25830,25832,25834,25836,25838,25841],{"class":3091,"line":3196},[3089,25829,4246],{"class":4245},[3089,25831,25813],{"class":4249},[3089,25833,3454],{"class":3099},[3089,25835,25818],{"class":4249},[3089,25837,3454],{"class":3099},[3089,25839,25840],{"class":4249},"Input",[3089,25842,4257],{"class":3099},[3089,25844,25845],{"class":3091,"line":3207},[3089,25846,4263],{"emptyLinePlaceholder":4262},[3089,25848,25849,25851,25853,25855,25857,25859],{"class":3091,"line":3218},[3089,25850,4269],{"class":4268},[3089,25852,4272],{"class":4268},[3089,25854,4275],{"class":4268},[3089,25856,7882],{"class":4249},[3089,25858,4281],{"class":3099},[3089,25860,25861],{"class":4249},"ObservableObject\n",[3089,25863,25864],{"class":3091,"line":3229},[3089,25865,4289],{"class":3099},[3089,25867,25868,25870,25873],{"class":3091,"line":3243},[3089,25869,13368],{"class":3099},[3089,25871,25872],{"class":4249},"ObservableProperty",[3089,25874,8113],{"class":3099},[3089,25876,25877,25879,25881,25884],{"class":3091,"line":3254},[3089,25878,8030],{"class":4268},[3089,25880,8033],{"class":4268},[3089,25882,25883],{"class":4312}," _userName",[3089,25885,4257],{"class":3099},[3089,25887,25888],{"class":3091,"line":3265},[3089,25889,5024],{"class":3099},[3089,25891,25892,25894,25896],{"class":3091,"line":3276},[3089,25893,13368],{"class":3099},[3089,25895,25872],{"class":4249},[3089,25897,8113],{"class":3099},[3089,25899,25900,25902,25904,25906],{"class":3091,"line":3283},[3089,25901,8030],{"class":4268},[3089,25903,6883],{"class":4268},[3089,25905,6886],{"class":4312},[3089,25907,4257],{"class":3099},[3089,25909,25910],{"class":3091,"line":3295},[3089,25911,5024],{"class":3099},[3089,25913,25914,25916,25919],{"class":3091,"line":3301},[3089,25915,13368],{"class":3099},[3089,25917,25918],{"class":4249},"RelayCommand",[3089,25920,8113],{"class":3099},[3089,25922,25923,25925,25927,25929,25932],{"class":3091,"line":3311},[3089,25924,8030],{"class":4268},[3089,25926,6953],{"class":4268},[3089,25928,6956],{"class":4249},[3089,25930,25931],{"class":3095}," SaveAsync",[3089,25933,6962],{"class":3099},[3089,25935,25936],{"class":3091,"line":3321},[3089,25937,4321],{"class":3099},[3089,25939,25940,25942,25944,25946],{"class":3091,"line":3331},[3089,25941,7033],{"class":4312},[3089,25943,4488],{"class":3099},[3089,25945,6976],{"class":4268},[3089,25947,4257],{"class":3099},[3089,25949,25950],{"class":3091,"line":3341},[3089,25951,25952],{"class":4245},"        try\n",[3089,25954,25955],{"class":3091,"line":3660},[3089,25956,5556],{"class":3099},[3089,25958,25959,25962,25965],{"class":3091,"line":3673},[3089,25960,25961],{"class":4268},"            await",[3089,25963,25964],{"class":3095}," SaveDataAsync",[3089,25966,5728],{"class":3099},[3089,25968,25969,25971,25973,25975,25977,25979],{"class":3091,"line":3678},[3089,25970,24968],{"class":4312},[3089,25972,3454],{"class":3099},[3089,25974,15234],{"class":3095},[3089,25976,4306],{"class":3099},[3089,25978,15239],{"class":3118},[3089,25980,4339],{"class":3099},[3089,25982,25983],{"class":3091,"line":3693},[3089,25984,5584],{"class":3099},[3089,25986,25987,25990,25992,25995,25998],{"class":3091,"line":3704},[3089,25988,25989],{"class":4245},"        catch",[3089,25991,4829],{"class":3099},[3089,25993,25994],{"class":4249},"Exception",[3089,25996,25997],{"class":4312}," ex",[3089,25999,4316],{"class":3099},[3089,26001,26002],{"class":3091,"line":3716},[3089,26003,5556],{"class":3099},[3089,26005,26006,26008,26010,26012,26014,26017,26019,26022,26024,26027,26029,26031],{"class":3091,"line":3721},[3089,26007,24968],{"class":4312},[3089,26009,3454],{"class":3099},[3089,26011,15308],{"class":3095},[3089,26013,4306],{"class":3099},[3089,26015,26016],{"class":3118},"$\"Помилка: ",[3089,26018,24163],{"class":24162},[3089,26020,26021],{"class":4312},"ex",[3089,26023,3454],{"class":24162},[3089,26025,26026],{"class":4312},"Message",[3089,26028,24168],{"class":24162},[3089,26030,24171],{"class":3118},[3089,26032,4339],{"class":3099},[3089,26034,26035],{"class":3091,"line":3739},[3089,26036,5584],{"class":3099},[3089,26038,26039],{"class":3091,"line":3750},[3089,26040,26041],{"class":4245},"        finally\n",[3089,26043,26044],{"class":3091,"line":3763},[3089,26045,5556],{"class":3099},[3089,26047,26048,26051,26053,26055],{"class":3091,"line":3772},[3089,26049,26050],{"class":4312},"            IsLoading",[3089,26052,4488],{"class":3099},[3089,26054,7038],{"class":4268},[3089,26056,4257],{"class":3099},[3089,26058,26059],{"class":3091,"line":3781},[3089,26060,5584],{"class":3099},[3089,26062,26063],{"class":3091,"line":4190},[3089,26064,4389],{"class":3099},[3089,26066,26067],{"class":3091,"line":5750},[3089,26068,4394],{"class":3099},[2964,26070,26071,3165],{},[2983,26072,26073],{},"Валідація з IDataErrorInfo",[3079,26075,26077],{"className":4236,"code":26076,"language":4238,"meta":3084,"style":3084},"public class UserViewModel : ObservableObject, IDataErrorInfo\n{\n    private string _email;\n    public string Email\n    {\n        get => _email;\n        set => SetProperty(ref _email, value);\n    }\n    \n    public string this[string columnName]\n    {\n        get\n        {\n            if (columnName == nameof(Email))\n            {\n                if (string.IsNullOrEmpty(Email))\n                    return \"Email обов'язковий\";\n                if (!IsValidEmail(Email))\n                    return \"Невірний формат email\";\n            }\n            return null;\n        }\n    }\n    \n    public string Error => null;\n    \n    private bool IsValidEmail(string email)\n    {\n        return Regex.IsMatch(email, @\"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\");\n    }\n}\n",[3086,26078,26079,26096,26100,26110,26118,26122,26132,26152,26156,26160,26176,26180,26184,26188,26206,26210,26228,26236,26251,26259,26263,26271,26275,26279,26283,26297,26301,26319,26323,26348,26352],{"__ignoreMap":3084},[3089,26080,26081,26083,26085,26087,26089,26092,26094],{"class":3091,"line":3092},[3089,26082,4269],{"class":4268},[3089,26084,4275],{"class":4268},[3089,26086,8011],{"class":4249},[3089,26088,4281],{"class":3099},[3089,26090,26091],{"class":4249},"ObservableObject",[3089,26093,4789],{"class":3099},[3089,26095,8021],{"class":4249},[3089,26097,26098],{"class":3091,"line":3196},[3089,26099,4289],{"class":3099},[3089,26101,26102,26104,26106,26108],{"class":3091,"line":3207},[3089,26103,8030],{"class":4268},[3089,26105,8033],{"class":4268},[3089,26107,8036],{"class":4312},[3089,26109,4257],{"class":3099},[3089,26111,26112,26114,26116],{"class":3091,"line":3218},[3089,26113,8043],{"class":4268},[3089,26115,8033],{"class":4268},[3089,26117,8048],{"class":4312},[3089,26119,26120],{"class":3091,"line":3229},[3089,26121,4321],{"class":3099},[3089,26123,26124,26126,26128,26130],{"class":3091,"line":3243},[3089,26125,8057],{"class":4268},[3089,26127,6909],{"class":3099},[3089,26129,8062],{"class":4312},[3089,26131,4257],{"class":3099},[3089,26133,26134,26136,26138,26140,26142,26144,26146,26148,26150],{"class":3091,"line":3254},[3089,26135,8069],{"class":4268},[3089,26137,6909],{"class":3099},[3089,26139,6924],{"class":3095},[3089,26141,4306],{"class":3099},[3089,26143,6929],{"class":4268},[3089,26145,8036],{"class":4312},[3089,26147,4789],{"class":3099},[3089,26149,6936],{"class":4312},[3089,26151,4339],{"class":3099},[3089,26153,26154],{"class":3091,"line":3265},[3089,26155,4389],{"class":3099},[3089,26157,26158],{"class":3091,"line":3276},[3089,26159,5024],{"class":3099},[3089,26161,26162,26164,26166,26168,26170,26172,26174],{"class":3091,"line":3283},[3089,26163,8043],{"class":4268},[3089,26165,8033],{"class":4268},[3089,26167,8102],{"class":4268},[3089,26169,8105],{"class":3099},[3089,26171,5848],{"class":4268},[3089,26173,8110],{"class":4312},[3089,26175,8113],{"class":3099},[3089,26177,26178],{"class":3091,"line":3295},[3089,26179,4321],{"class":3099},[3089,26181,26182],{"class":3091,"line":3301},[3089,26183,8122],{"class":4268},[3089,26185,26186],{"class":3091,"line":3311},[3089,26187,5556],{"class":3099},[3089,26189,26190,26192,26194,26196,26198,26200,26202,26204],{"class":3091,"line":3321},[3089,26191,8131],{"class":4245},[3089,26193,4829],{"class":3099},[3089,26195,8136],{"class":4312},[3089,26197,4841],{"class":3099},[3089,26199,8141],{"class":4268},[3089,26201,4306],{"class":3099},[3089,26203,8146],{"class":4312},[3089,26205,8149],{"class":3099},[3089,26207,26208],{"class":3091,"line":3331},[3089,26209,8154],{"class":3099},[3089,26211,26212,26214,26216,26218,26220,26222,26224,26226],{"class":3091,"line":3341},[3089,26213,8159],{"class":4245},[3089,26215,4829],{"class":3099},[3089,26217,5848],{"class":4268},[3089,26219,3454],{"class":3099},[3089,26221,8168],{"class":3095},[3089,26223,4306],{"class":3099},[3089,26225,8146],{"class":4312},[3089,26227,8149],{"class":3099},[3089,26229,26230,26232,26234],{"class":3091,"line":3660},[3089,26231,8179],{"class":4245},[3089,26233,8182],{"class":3118},[3089,26235,4257],{"class":3099},[3089,26237,26238,26240,26242,26245,26247,26249],{"class":3091,"line":3673},[3089,26239,8159],{"class":4245},[3089,26241,8191],{"class":3099},[3089,26243,26244],{"class":3095},"IsValidEmail",[3089,26246,4306],{"class":3099},[3089,26248,8146],{"class":4312},[3089,26250,8149],{"class":3099},[3089,26252,26253,26255,26257],{"class":3091,"line":3678},[3089,26254,8179],{"class":4245},[3089,26256,8212],{"class":3118},[3089,26258,4257],{"class":3099},[3089,26260,26261],{"class":3091,"line":3693},[3089,26262,8219],{"class":3099},[3089,26264,26265,26267,26269],{"class":3091,"line":3704},[3089,26266,8224],{"class":4245},[3089,26268,8227],{"class":4268},[3089,26270,4257],{"class":3099},[3089,26272,26273],{"class":3091,"line":3716},[3089,26274,5584],{"class":3099},[3089,26276,26277],{"class":3091,"line":3721},[3089,26278,4389],{"class":3099},[3089,26280,26281],{"class":3091,"line":3739},[3089,26282,5024],{"class":3099},[3089,26284,26285,26287,26289,26291,26293,26295],{"class":3091,"line":3750},[3089,26286,8043],{"class":4268},[3089,26288,8033],{"class":4268},[3089,26290,8250],{"class":4312},[3089,26292,6909],{"class":3099},[3089,26294,8255],{"class":4268},[3089,26296,4257],{"class":3099},[3089,26298,26299],{"class":3091,"line":3763},[3089,26300,5024],{"class":3099},[3089,26302,26303,26305,26307,26310,26312,26314,26317],{"class":3091,"line":3772},[3089,26304,8030],{"class":4268},[3089,26306,6883],{"class":4268},[3089,26308,26309],{"class":3095}," IsValidEmail",[3089,26311,4306],{"class":3099},[3089,26313,5848],{"class":4268},[3089,26315,26316],{"class":4312}," email",[3089,26318,4316],{"class":3099},[3089,26320,26321],{"class":3091,"line":3781},[3089,26322,4321],{"class":3099},[3089,26324,26325,26328,26331,26333,26336,26338,26341,26343,26346],{"class":3091,"line":4190},[3089,26326,26327],{"class":4245},"        return",[3089,26329,26330],{"class":4312}," Regex",[3089,26332,3454],{"class":3099},[3089,26334,26335],{"class":3095},"IsMatch",[3089,26337,4306],{"class":3099},[3089,26339,26340],{"class":4312},"email",[3089,26342,4789],{"class":3099},[3089,26344,26345],{"class":3118},"@\"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\"",[3089,26347,4339],{"class":3099},[3089,26349,26350],{"class":3091,"line":5750},[3089,26351,4389],{"class":3099},[3089,26353,26354],{"class":3091,"line":5755},[3089,26355,4394],{"class":3099},[3000,26357,26359],{"id":26358},"інтеграція-з-іншими-бібліотеками","Інтеграція з іншими бібліотеками",[2964,26361,26362],{},[2983,26363,26364],{},"Чи можна змішувати HandyControl з WPF UI?",[2964,26366,26367],{},"Технічно можна, але не рекомендується через конфлікти стилів. Якщо потрібно використовувати обидві бібліотеки:",[4201,26369,26370,26373,26379],{},[3011,26371,26372],{},"Завантажуйте теми в певному порядку",[3011,26374,26375,26376,24583],{},"Використовуйте явні стилі (",[3086,26377,26378],{},"Style=\"{StaticResource ...}\"",[3011,26380,26381],{},"Ізолюйте контроли в окремих ResourceDictionary",[2964,26383,26384,3165],{},[2983,26385,26386],{},"Інтеграція з LiveCharts для графіків",[3079,26388,26390],{"className":3168,"code":26389,"language":3170,"meta":3084,"style":3084},"\u003Chc:Card Effect=\"{StaticResource EffectShadow2}\" Padding=\"20\">\n    \u003Clvc:CartesianChart Series=\"{Binding SeriesCollection}\">\n        \u003Clvc:CartesianChart.AxisX>\n            \u003Clvc:Axis Title=\"Місяць\"/>\n        \u003C/lvc:CartesianChart.AxisX>\n        \u003Clvc:CartesianChart.AxisY>\n            \u003Clvc:Axis Title=\"Продажі\"/>\n        \u003C/lvc:CartesianChart.AxisY>\n    \u003C/lvc:CartesianChart>\n\u003C/hc:Card>\n",[3086,26391,26392,26412,26429,26438,26455,26463,26472,26487,26495,26503],{"__ignoreMap":3084},[3089,26393,26394,26396,26398,26400,26402,26404,26406,26408,26410],{"class":3091,"line":3092},[3089,26395,3178],{"class":3177},[3089,26397,9871],{"class":3181},[3089,26399,9874],{"class":3185},[3089,26401,3189],{"class":3099},[3089,26403,9879],{"class":3192},[3089,26405,3901],{"class":3185},[3089,26407,3189],{"class":3099},[3089,26409,3565],{"class":3192},[3089,26411,3240],{"class":3177},[3089,26413,26414,26416,26419,26422,26424,26427],{"class":3091,"line":3196},[3089,26415,3246],{"class":3177},[3089,26417,26418],{"class":3181},"lvc:CartesianChart",[3089,26420,26421],{"class":3185}," Series",[3089,26423,3189],{"class":3099},[3089,26425,26426],{"class":3192},"\"{Binding SeriesCollection}\"",[3089,26428,3240],{"class":3177},[3089,26430,26431,26433,26436],{"class":3091,"line":3207},[3089,26432,3257],{"class":3177},[3089,26434,26435],{"class":3181},"lvc:CartesianChart.AxisX",[3089,26437,3240],{"class":3177},[3089,26439,26440,26442,26445,26448,26450,26453],{"class":3091,"line":3218},[3089,26441,3268],{"class":3177},[3089,26443,26444],{"class":3181},"lvc:Axis",[3089,26446,26447],{"class":3185}," Title",[3089,26449,3189],{"class":3099},[3089,26451,26452],{"class":3192},"\"Місяць\"",[3089,26454,3292],{"class":3177},[3089,26456,26457,26459,26461],{"class":3091,"line":3229},[3089,26458,3324],{"class":3177},[3089,26460,26435],{"class":3181},[3089,26462,3240],{"class":3177},[3089,26464,26465,26467,26470],{"class":3091,"line":3243},[3089,26466,3257],{"class":3177},[3089,26468,26469],{"class":3181},"lvc:CartesianChart.AxisY",[3089,26471,3240],{"class":3177},[3089,26473,26474,26476,26478,26480,26482,26485],{"class":3091,"line":3254},[3089,26475,3268],{"class":3177},[3089,26477,26444],{"class":3181},[3089,26479,26447],{"class":3185},[3089,26481,3189],{"class":3099},[3089,26483,26484],{"class":3192},"\"Продажі\"",[3089,26486,3292],{"class":3177},[3089,26488,26489,26491,26493],{"class":3091,"line":3265},[3089,26490,3324],{"class":3177},[3089,26492,26469],{"class":3181},[3089,26494,3240],{"class":3177},[3089,26496,26497,26499,26501],{"class":3091,"line":3276},[3089,26498,3334],{"class":3177},[3089,26500,26418],{"class":3181},[3089,26502,3240],{"class":3177},[3089,26504,26505,26507,26509],{"class":3091,"line":3283},[3089,26506,3344],{"class":3177},[3089,26508,9871],{"class":3181},[3089,26510,3240],{"class":3177},[2964,26512,26513,3165],{},[2983,26514,26515],{},"Інтеграція з MaterialDesignThemes",[2964,26517,26518],{},"Не рекомендується змішувати HandyControl з MaterialDesignThemes, оскільки обидві бібліотеки надають повний набір контролів і стилів. Виберіть одну бібліотеку для всього проекту.",[2959,26520,26522],{"id":26521},"порівняння-з-альтернативами","Порівняння з альтернативами",[26524,26525,26526,26547],"table",{},[26527,26528,26529],"thead",{},[26530,26531,26532,26536,26538,26541,26544],"tr",{},[26533,26534,26535],"th",{},"Характеристика",[26533,26537,7724],{},[26533,26539,26540],{},"WPF UI",[26533,26542,26543],{},"ModernWpf",[26533,26545,26546],{},"MahApps.Metro",[26548,26549,26550,26570,26589,26606,26624,26641,26660,26678,26694,26709,26727,26742,26759,26775],"tbody",{},[26530,26551,26552,26558,26561,26564,26567],{},[26553,26554,26555],"td",{},[2983,26556,26557],{},"Кількість контролів",[26553,26559,26560],{},"80+",[26553,26562,26563],{},"30+",[26553,26565,26566],{},"25+",[26553,26568,26569],{},"40+",[26530,26571,26572,26577,26580,26583,26586],{},[26553,26573,26574],{},[2983,26575,26576],{},"Стиль дизайну",[26553,26578,26579],{},"Material-like",[26553,26581,26582],{},"Fluent (Win11)",[26553,26584,26585],{},"Fluent (Win10)",[26553,26587,26588],{},"Metro (Win8)",[26530,26590,26591,26596,26599,26602,26604],{},[26553,26592,26593],{},[2983,26594,26595],{},"Документація",[26553,26597,26598],{},"Китайська/Англійська",[26553,26600,26601],{},"Англійська",[26553,26603,26601],{},[26553,26605,26601],{},[26530,26607,26608,26613,26616,26619,26622],{},[26553,26609,26610],{},[2983,26611,26612],{},"Активність розробки",[26553,26614,26615],{},"Активний",[26553,26617,26618],{},"Дуже активний",[26553,26620,26621],{},"Менш активний",[26553,26623,26615],{},[26530,26625,26626,26631,26634,26637,26639],{},[26553,26627,26628],{},[2983,26629,26630],{},"Складність вивчення",[26553,26632,26633],{},"Висока",[26553,26635,26636],{},"Середня",[26553,26638,26636],{},[26553,26640,26633],{},[26530,26642,26643,26648,26651,26654,26657],{},[26553,26644,26645],{},[2983,26646,26647],{},"Розмір бібліотеки",[26553,26649,26650],{},"~5-8 MB",[26553,26652,26653],{},"~2-3 MB",[26553,26655,26656],{},"~3-4 MB",[26553,26658,26659],{},"~4-6 MB",[26530,26661,26662,26667,26670,26673,26675],{},[26553,26663,26664],{},[2983,26665,26666],{},".NET Framework",[26553,26668,26669],{},"✅ 4.6.2+",[26553,26671,26672],{},"❌",[26553,26674,26669],{},[26553,26676,26677],{},"✅ 4.5+",[26530,26679,26680,26685,26688,26690,26692],{},[26553,26681,26682],{},[2983,26683,26684],{},".NET 6/7/8",[26553,26686,26687],{},"✅",[26553,26689,26687],{},[26553,26691,26687],{},[26553,26693,26687],{},[26530,26695,26696,26701,26703,26705,26707],{},[26553,26697,26698],{},[2983,26699,26700],{},"Темна тема",[26553,26702,26687],{},[26553,26704,26687],{},[26553,26706,26687],{},[26553,26708,26687],{},[26530,26710,26711,26716,26719,26722,26725],{},[26553,26712,26713],{},[2983,26714,26715],{},"Власні теми",[26553,26717,26718],{},"✅ Складно",[26553,26720,26721],{},"✅ Легко",[26553,26723,26724],{},"✅ Середньо",[26553,26726,26724],{},[26530,26728,26729,26734,26736,26738,26740],{},[26553,26730,26731],{},[2983,26732,26733],{},"Windows 11 native",[26553,26735,26672],{},[26553,26737,26687],{},[26553,26739,26672],{},[26553,26741,26672],{},[26530,26743,26744,26749,26752,26755,26757],{},[26553,26745,26746],{},[2983,26747,26748],{},"Accessibility",[26553,26750,26751],{},"⚠️ Обмежена",[26553,26753,26754],{},"✅ Добра",[26553,26756,26754],{},[26553,26758,26754],{},[26530,26760,26761,26765,26768,26771,26773],{},[26553,26762,26763],{},[2983,26764,25788],{},[26553,26766,26767],{},"⚠️ Середній",[26553,26769,26770],{},"✅ Добрий",[26553,26772,26770],{},[26553,26774,26770],{},[26530,26776,26777,26782,26785,26788,26790],{},[26553,26778,26779],{},[2983,26780,26781],{},"Спільнота",[26553,26783,26784],{},"Велика (Китай)",[26553,26786,26787],{},"Велика",[26553,26789,26636],{},[26553,26791,26787],{},[3000,26793,3003],{"id":26794},"коли-використовувати-handycontrol-1",[2964,26796,26797],{},[2983,26798,26799],{},"Використовуйте HandyControl, якщо:",[3008,26801,26802,26805,26808,26811,26814,26817],{},[3011,26803,26804],{},"Потрібна велика колекція готових контролів (80+)",[3011,26806,26807],{},"Створюєте складний enterprise додаток (CRM, ERP, admin панель)",[3011,26809,26810],{},"Не критична документація англійською мовою",[3011,26812,26813],{},"Не важливий Windows 11 native вигляд",[3011,26815,26816],{},"Потрібні унікальні контроли (WaterfallPanel, CompareSlider, WaveProgressBar)",[3011,26818,26819],{},"Бюджет на UI/UX обмежений",[2964,26821,26822],{},[2983,26823,26824],{},"НЕ використовуйте HandyControl, якщо:",[3008,26826,26827,26830,26833,26836,26839],{},[3011,26828,26829],{},"Додаток повинен виглядати нативно на Windows 11 → використайте WPF UI",[3011,26831,26832],{},"Простий додаток з мінімальним UI → HandyControl додасть зайвий розмір",[3011,26834,26835],{},"Жорсткі вимоги до accessibility → HandyControl має обмежену підтримку",[3011,26837,26838],{},"Команда не знає англійської/китайської → документація буде складною",[3011,26840,26841],{},"Критична performance → деякі контроли HandyControl важчі за стандартні",[3000,26843,26845],{"id":26844},"рекомендації-по-вибору-бібліотеки","Рекомендації по вибору бібліотеки",[2964,26847,26848,26851],{},[2983,26849,26850],{},"Для Windows 11 додатків",": WPF UI — найкращий вибір для нативного вигляду",[2964,26853,26854,26857],{},[2983,26855,26856],{},"Для Windows 10 додатків",": ModernWpf — точна реалізація Fluent Design",[2964,26859,26860,26863],{},[2983,26861,26862],{},"Для складних enterprise додатків",": HandyControl — найбільша колекція контролів",[2964,26865,26866,26869],{},[2983,26867,26868],{},"Для Metro стилю",": MahApps.Metro — зріла бібліотека з великою спільнотою",[2964,26871,26872,26875],{},[2983,26873,26874],{},"Для простих додатків",": Стандартний WPF або WPF UI з мінімальним набором контролів",[2959,26877,26879],{"id":26878},"best-practices","Best Practices",[3000,26881,25788],{"id":26882},"performance",[2964,26884,26885],{},[2983,26886,26887],{},"Які контроли важкі:",[3008,26889,26890,26893,26896,26899],{},[3011,26891,26892],{},"WaterfallPanel з великою кількістю елементів",[3011,26894,26895],{},"WaveProgressBar (анімація води)",[3011,26897,26898],{},"GifImage (анімовані GIF)",[3011,26900,26901],{},"DataGrid з великою кількістю рядків без virtualization",[2964,26903,26904],{},[2983,26905,26906],{},"Як оптимізувати:",[4201,26908,26909],{},[3011,26910,26911,3165],{},[2983,26912,26913],{},"Використовуйте virtualization для списків",[3079,26915,26917],{"className":3168,"code":26916,"language":3170,"meta":3084,"style":3084},"\u003Chc:ListBox VirtualizingPanel.IsVirtualizing=\"True\"\n            VirtualizingPanel.VirtualizationMode=\"Recycling\"\n            ItemsSource=\"{Binding LargeCollection}\"/>\n",[3086,26918,26919,26932,26942],{"__ignoreMap":3084},[3089,26920,26921,26923,26925,26928,26930],{"class":3091,"line":3092},[3089,26922,3178],{"class":3177},[3089,26924,12927],{"class":3181},[3089,26926,26927],{"class":3185}," VirtualizingPanel.IsVirtualizing",[3089,26929,3189],{"class":3099},[3089,26931,7411],{"class":3192},[3089,26933,26934,26937,26939],{"class":3091,"line":3196},[3089,26935,26936],{"class":3185},"            VirtualizingPanel.VirtualizationMode",[3089,26938,3189],{"class":3099},[3089,26940,26941],{"class":3192},"\"Recycling\"\n",[3089,26943,26944,26947,26949,26952],{"class":3091,"line":3207},[3089,26945,26946],{"class":3185},"            ItemsSource",[3089,26948,3189],{"class":3099},[3089,26950,26951],{"class":3192},"\"{Binding LargeCollection}\"",[3089,26953,3292],{"class":3177},[4201,26955,26956],{"start":3196},[3011,26957,26958,3165],{},[2983,26959,26960],{},"Lazy loading для зображень",[3079,26962,26964],{"className":4236,"code":26963,"language":4238,"meta":3084,"style":3084},"BitmapImage bitmap = new BitmapImage();\nbitmap.BeginInit();\nbitmap.CacheOption = BitmapCacheOption.OnLoad;\nbitmap.CreateOptions = BitmapCreateOptions.DelayCreation;\nbitmap.UriSource = new Uri(imagePath);\nbitmap.EndInit();\n",[3086,26965,26966,26983,26995,27016,27037,27059],{"__ignoreMap":3084},[3089,26967,26968,26971,26974,26976,26978,26981],{"class":3091,"line":3092},[3089,26969,26970],{"class":4249},"BitmapImage",[3089,26972,26973],{"class":4312}," bitmap",[3089,26975,4488],{"class":3099},[3089,26977,7898],{"class":4268},[3089,26979,26980],{"class":4249}," BitmapImage",[3089,26982,5728],{"class":3099},[3089,26984,26985,26988,26990,26993],{"class":3091,"line":3196},[3089,26986,26987],{"class":4312},"bitmap",[3089,26989,3454],{"class":3099},[3089,26991,26992],{"class":3095},"BeginInit",[3089,26994,5728],{"class":3099},[3089,26996,26997,26999,27001,27004,27006,27009,27011,27014],{"class":3091,"line":3207},[3089,26998,26987],{"class":4312},[3089,27000,3454],{"class":3099},[3089,27002,27003],{"class":4312},"CacheOption",[3089,27005,4488],{"class":3099},[3089,27007,27008],{"class":4312},"BitmapCacheOption",[3089,27010,3454],{"class":3099},[3089,27012,27013],{"class":4312},"OnLoad",[3089,27015,4257],{"class":3099},[3089,27017,27018,27020,27022,27025,27027,27030,27032,27035],{"class":3091,"line":3218},[3089,27019,26987],{"class":4312},[3089,27021,3454],{"class":3099},[3089,27023,27024],{"class":4312},"CreateOptions",[3089,27026,4488],{"class":3099},[3089,27028,27029],{"class":4312},"BitmapCreateOptions",[3089,27031,3454],{"class":3099},[3089,27033,27034],{"class":4312},"DelayCreation",[3089,27036,4257],{"class":3099},[3089,27038,27039,27041,27043,27046,27048,27050,27052,27054,27057],{"class":3091,"line":3229},[3089,27040,26987],{"class":4312},[3089,27042,3454],{"class":3099},[3089,27044,27045],{"class":4312},"UriSource",[3089,27047,4488],{"class":3099},[3089,27049,7898],{"class":4268},[3089,27051,11100],{"class":4249},[3089,27053,4306],{"class":3099},[3089,27055,27056],{"class":4312},"imagePath",[3089,27058,4339],{"class":3099},[3089,27060,27061,27063,27065,27068],{"class":3091,"line":3243},[3089,27062,26987],{"class":4312},[3089,27064,3454],{"class":3099},[3089,27066,27067],{"class":3095},"EndInit",[3089,27069,5728],{"class":3099},[4201,27071,27072],{"start":3207},[3011,27073,27074,3165],{},[2983,27075,27076],{},"Обмежте кількість анімацій",[2964,27078,27079],{},"Вимкніть анімації для контролів, які не видимі користувачу.",[4201,27081,27082],{"start":3218},[3011,27083,27084,3165],{},[2983,27085,27086],{},"Використовуйте Pagination",[2964,27088,27089],{},"Замість завантаження всіх даних одразу, використовуйте пагінацію.",[3000,27091,27093],{"id":27092},"theming","Theming",[2964,27095,27096],{},[2983,27097,27098],{},"Організація тем:",[2964,27100,27101,27102,27105],{},"Створіть окрему папку ",[3086,27103,27104],{},"Themes/"," для всіх тем:",[3079,27107,27112],{"className":27108,"code":27110,"language":27111},[27109],"language-text","Themes/\n  ├── LightTheme.xaml\n  ├── DarkTheme.xaml\n  └── CustomTheme.xaml\n","text",[3086,27113,27110],{"__ignoreMap":3084},[2964,27115,27116],{},[2983,27117,27118],{},"Динамічна зміна теми:",[3079,27120,27122],{"className":4236,"code":27121,"language":4238,"meta":3084,"style":3084},"public class ThemeService\n{\n    public void ApplyTheme(string themeName)\n    {\n        var theme = themeName switch\n        {\n            \"Light\" => ApplicationTheme.Light,\n            \"Dark\" => ApplicationTheme.Dark,\n            _ => ApplicationTheme.Light\n        };\n        \n        ThemeManager.Current.ApplicationTheme = theme;\n        \n        // Збереження вибору\n        Properties.Settings.Default.Theme = themeName;\n        Properties.Settings.Default.Save();\n    }\n}\n",[3086,27123,27124,27133,27137,27155,27159,27173,27177,27192,27207,27221,27225,27229,27248,27252,27257,27279,27297,27301],{"__ignoreMap":3084},[3089,27125,27126,27128,27130],{"class":3091,"line":3092},[3089,27127,4269],{"class":4268},[3089,27129,4275],{"class":4268},[3089,27131,27132],{"class":4249}," ThemeService\n",[3089,27134,27135],{"class":3091,"line":3196},[3089,27136,4289],{"class":3099},[3089,27138,27139,27141,27143,27146,27148,27150,27153],{"class":3091,"line":3207},[3089,27140,8043],{"class":4268},[3089,27142,4300],{"class":4268},[3089,27144,27145],{"class":3095}," ApplyTheme",[3089,27147,4306],{"class":3099},[3089,27149,5848],{"class":4268},[3089,27151,27152],{"class":4312}," themeName",[3089,27154,4316],{"class":3099},[3089,27156,27157],{"class":3091,"line":3218},[3089,27158,4321],{"class":3099},[3089,27160,27161,27163,27165,27167,27170],{"class":3091,"line":3229},[3089,27162,5511],{"class":4268},[3089,27164,5830],{"class":4312},[3089,27166,4488],{"class":3099},[3089,27168,27169],{"class":4312},"themeName",[3089,27171,27172],{"class":4245}," switch\n",[3089,27174,27175],{"class":3091,"line":3243},[3089,27176,5556],{"class":3099},[3089,27178,27179,27182,27184,27186,27188,27190],{"class":3091,"line":3254},[3089,27180,27181],{"class":3118},"            \"Light\"",[3089,27183,6909],{"class":3099},[3089,27185,4485],{"class":4312},[3089,27187,3454],{"class":3099},[3089,27189,3449],{"class":4312},[3089,27191,11891],{"class":3099},[3089,27193,27194,27197,27199,27201,27203,27205],{"class":3091,"line":3265},[3089,27195,27196],{"class":3118},"            \"Dark\"",[3089,27198,6909],{"class":3099},[3089,27200,4485],{"class":4312},[3089,27202,3454],{"class":3099},[3089,27204,3453],{"class":4312},[3089,27206,11891],{"class":3099},[3089,27208,27209,27212,27214,27216,27218],{"class":3091,"line":3276},[3089,27210,27211],{"class":4268},"            _",[3089,27213,6909],{"class":3099},[3089,27215,4485],{"class":4312},[3089,27217,3454],{"class":3099},[3089,27219,27220],{"class":4312},"Light\n",[3089,27222,27223],{"class":3091,"line":3283},[3089,27224,19795],{"class":3099},[3089,27226,27227],{"class":3091,"line":3295},[3089,27228,3875],{"class":3099},[3089,27230,27231,27233,27235,27237,27239,27241,27243,27246],{"class":3091,"line":3301},[3089,27232,4856],{"class":4312},[3089,27234,3454],{"class":3099},[3089,27236,4480],{"class":4312},[3089,27238,3454],{"class":3099},[3089,27240,4485],{"class":4312},[3089,27242,4488],{"class":3099},[3089,27244,27245],{"class":4312},"theme",[3089,27247,4257],{"class":3099},[3089,27249,27250],{"class":3091,"line":3311},[3089,27251,3875],{"class":3099},[3089,27253,27254],{"class":3091,"line":3321},[3089,27255,27256],{"class":3279},"        // Збереження вибору\n",[3089,27258,27259,27261,27263,27265,27267,27269,27271,27273,27275,27277],{"class":3091,"line":3331},[3089,27260,5661],{"class":4312},[3089,27262,3454],{"class":3099},[3089,27264,5524],{"class":4312},[3089,27266,3454],{"class":3099},[3089,27268,5529],{"class":4312},[3089,27270,3454],{"class":3099},[3089,27272,3358],{"class":4312},[3089,27274,4488],{"class":3099},[3089,27276,27169],{"class":4312},[3089,27278,4257],{"class":3099},[3089,27280,27281,27283,27285,27287,27289,27291,27293,27295],{"class":3091,"line":3341},[3089,27282,5661],{"class":4312},[3089,27284,3454],{"class":3099},[3089,27286,5524],{"class":4312},[3089,27288,3454],{"class":3099},[3089,27290,5529],{"class":4312},[3089,27292,3454],{"class":3099},[3089,27294,5725],{"class":3095},[3089,27296,5728],{"class":3099},[3089,27298,27299],{"class":3091,"line":3660},[3089,27300,4389],{"class":3099},[3089,27302,27303],{"class":3091,"line":3673},[3089,27304,4394],{"class":3099},[2964,27306,27307],{},[2983,27308,27309],{},"Кастомізація кольорів:",[2964,27311,27312],{},"Створіть ResourceDictionary з власними кольорами та завантажуйте його після HandyControl тем.",[3000,27314,27316],{"id":27315},"локалізація","Локалізація",[2964,27318,27319],{},"HandyControl підтримує тільки англійську та китайську мови. Для додавання власної мови:",[4201,27321,27322,27325,27332],{},[3011,27323,27324],{},"Створіть ResourceDictionary з перекладами",[3011,27326,27327,27328,27331],{},"Використовуйте ",[3086,27329,27330],{},"DynamicResource"," для всіх текстів",[3011,27333,27334],{},"Перемикайте ResourceDictionary при зміні мови",[3079,27336,27338],{"className":3168,"code":27337,"language":3170,"meta":3084,"style":3084},"\u003CResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n    \u003Csystem:String x:Key=\"SaveButton\">Зберегти\u003C/system:String>\n    \u003Csystem:String x:Key=\"CancelButton\">Скасувати\u003C/system:String>\n    \u003Csystem:String x:Key=\"DeleteButton\">Видалити\u003C/system:String>\n\u003C/ResourceDictionary>\n",[3086,27339,27340,27355,27380,27404,27428],{"__ignoreMap":3084},[3089,27341,27342,27344,27346,27348,27350,27353],{"class":3091,"line":3092},[3089,27343,3178],{"class":3177},[3089,27345,3260],{"class":3181},[3089,27347,5003],{"class":3185},[3089,27349,3189],{"class":3099},[3089,27351,27352],{"class":3192},"\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"",[3089,27354,3240],{"class":3177},[3089,27356,27357,27359,27362,27364,27366,27369,27371,27374,27376,27378],{"class":3091,"line":3196},[3089,27358,3246],{"class":3177},[3089,27360,27361],{"class":3181},"system:String",[3089,27363,5039],{"class":3185},[3089,27365,3189],{"class":3099},[3089,27367,27368],{"class":3192},"\"SaveButton\"",[3089,27370,5047],{"class":3177},[3089,27372,27373],{"class":3099},"Зберегти",[3089,27375,3344],{"class":3177},[3089,27377,27361],{"class":3181},[3089,27379,3240],{"class":3177},[3089,27381,27382,27384,27386,27388,27390,27393,27395,27398,27400,27402],{"class":3091,"line":3207},[3089,27383,3246],{"class":3177},[3089,27385,27361],{"class":3181},[3089,27387,5039],{"class":3185},[3089,27389,3189],{"class":3099},[3089,27391,27392],{"class":3192},"\"CancelButton\"",[3089,27394,5047],{"class":3177},[3089,27396,27397],{"class":3099},"Скасувати",[3089,27399,3344],{"class":3177},[3089,27401,27361],{"class":3181},[3089,27403,3240],{"class":3177},[3089,27405,27406,27408,27410,27412,27414,27417,27419,27422,27424,27426],{"class":3091,"line":3218},[3089,27407,3246],{"class":3177},[3089,27409,27361],{"class":3181},[3089,27411,5039],{"class":3185},[3089,27413,3189],{"class":3099},[3089,27415,27416],{"class":3192},"\"DeleteButton\"",[3089,27418,5047],{"class":3177},[3089,27420,27421],{"class":3099},"Видалити",[3089,27423,3344],{"class":3177},[3089,27425,27361],{"class":3181},[3089,27427,3240],{"class":3177},[3089,27429,27430,27432,27434],{"class":3091,"line":3229},[3089,27431,3344],{"class":3177},[3089,27433,3260],{"class":3181},[3089,27435,3240],{"class":3177},[3000,27437,26748],{"id":27438},"accessibility",[2964,27440,27441],{},"HandyControl має обмежену підтримку accessibility. Для покращення:",[4201,27443,27444,27451,27457,27460],{},[3011,27445,27446,27447,27450],{},"Додавайте ",[3086,27448,27449],{},"AutomationProperties.Name"," до всіх інтерактивних елементів",[3011,27452,27327,27453,27456],{},[3086,27454,27455],{},"AutomationProperties.HelpText"," для додаткової інформації",[3011,27458,27459],{},"Забезпечте keyboard navigation (Tab order)",[3011,27461,27462],{},"Тестуйте з screen readers (Narrator, NVDA)",[3079,27464,27466],{"className":3168,"code":27465,"language":3170,"meta":3084,"style":3084},"\u003Chc:Button Content=\"Зберегти\"\n           AutomationProperties.Name=\"Зберегти зміни\"\n           AutomationProperties.HelpText=\"Натисніть, щоб зберегти всі зміни\"/>\n",[3086,27467,27468,27480,27490],{"__ignoreMap":3084},[3089,27469,27470,27472,27474,27476,27478],{"class":3091,"line":3092},[3089,27471,3178],{"class":3177},[3089,27473,3726],{"class":3181},[3089,27475,3729],{"class":3185},[3089,27477,3189],{"class":3099},[3089,27479,16826],{"class":3192},[3089,27481,27482,27485,27487],{"class":3091,"line":3196},[3089,27483,27484],{"class":3185},"           AutomationProperties.Name",[3089,27486,3189],{"class":3099},[3089,27488,27489],{"class":3192},"\"Зберегти зміни\"\n",[3089,27491,27492,27495,27497,27500],{"class":3091,"line":3207},[3089,27493,27494],{"class":3185},"           AutomationProperties.HelpText",[3089,27496,3189],{"class":3099},[3089,27498,27499],{"class":3192},"\"Натисніть, щоб зберегти всі зміни\"",[3089,27501,3292],{"class":3177},[2959,27503,27505],{"id":27504},"обмеження-та-проблеми","Обмеження та проблеми",[3000,27507,26595],{"id":27508},"документація",[2964,27510,27511,27514],{},[2983,27512,27513],{},"Проблема",": Документація переважно китайською мовою.",[2964,27516,27517,3165],{},[2983,27518,27519],{},"Рішення",[3008,27521,27522,27525,27528,27531],{},[3011,27523,27524],{},"Використовуйте Google Translate для перекладу",[3011,27526,27527],{},"Вивчайте demo додаток (HandyControlDemo)",[3011,27529,27530],{},"Шукайте приклади на GitHub",[3011,27532,27533],{},"Читайте англомовні статті та туторіали",[3000,27535,27537],{"id":27536},"стиль","Стиль",[2964,27539,27540,27542],{},[2983,27541,27513],{},": HandyControl не має чистого Fluent Design, може не підходити для Windows 11.",[2964,27544,27545,3165],{},[2983,27546,27519],{},[3008,27548,27549,27552,27555],{},[3011,27550,27551],{},"Для Windows 11 native вигляду використовуйте WPF UI",[3011,27553,27554],{},"Для внутрішніх корпоративних систем стиль HandyControl прийнятний",[3011,27556,27557],{},"Можна кастомізувати стилі для наближення до Fluent Design",[3000,27559,27561],{"id":27560},"розмір","Розмір",[2964,27563,27564,27566],{},[2983,27565,27513],{},": Велика бібліотека (~5-8 MB) впливає на розмір додатку.",[2964,27568,27569,3165],{},[2983,27570,27519],{},[3008,27572,27573,27576,27579],{},[3011,27574,27575],{},"Використовуйте trimming при публікації",[3011,27577,27578],{},"Розгляньте self-contained deployment з NativeAOT",[3011,27580,27581],{},"Для простих додатків виберіть легшу бібліотеку",[3000,27583,27585],{"id":27584},"підтримка","Підтримка",[2964,27587,27588,27590],{},[2983,27589,27513],{},": GitHub Issues переважно китайською мовою.",[2964,27592,27593,3165],{},[2983,27594,27519],{},[3008,27596,27597,27600,27603],{},[3011,27598,27599],{},"Пишіть Issues англійською — розробники зазвичай відповідають",[3011,27601,27602],{},"Шукайте схожі проблеми через GitHub Search",[3011,27604,27605],{},"Приєднуйтесь до англомовної спільноти WPF",[2959,27607,27609],{"id":27608},"практичні-завдання","Практичні завдання",[3000,27611,27613],{"id":27612},"рівень-1-базова-інтеграція-2-3-години","Рівень 1: Базова інтеграція (2-3 години)",[2964,27615,27616,27619],{},[2983,27617,27618],{},"Мета",": Створити простий додаток з HandyControl та освоїти базові контроли.",[2964,27621,27622,3165],{},[2983,27623,27624],{},"Завдання",[4201,27626,27627,27630,27633,27636,27662,27665,27668],{},[3011,27628,27629],{},"Створіть новий WPF проект (.NET 6 або вище)",[3011,27631,27632],{},"Встановіть HandyControl через NuGet",[3011,27634,27635],{},"Підключіть теми у App.xaml",[3011,27637,27638,27639],{},"Створіть вікно з формою реєстрації, яка включає:\n",[3008,27640,27641,27644,27647,27650,27653,27656,27659],{},[3011,27642,27643],{},"TextBox для імені (з Title та Placeholder)",[3011,27645,27646],{},"TextBox для email (з валідацією)",[3011,27648,27649],{},"PasswordBox з ShowEyeButton",[3011,27651,27652],{},"DatePicker для дати народження",[3011,27654,27655],{},"ComboBox для вибору країни",[3011,27657,27658],{},"CheckBox для згоди з умовами",[3011,27660,27661],{},"Button для реєстрації (Primary style)",[3011,27663,27664],{},"Додайте перемикач теми (Light/Dark) у верхній частині вікна",[3011,27666,27667],{},"Реалізуйте базову валідацію через IDataErrorInfo",[3011,27669,27670],{},"При успішній реєстрації показуйте Growl notification",[2964,27672,27673,3165],{},[2983,27674,27675],{},"Критерії оцінки",[3008,27677,27678,27681,27684,27687],{},[3011,27679,27680],{},"Всі контроли HandyControl використовуються правильно",[3011,27682,27683],{},"Валідація працює коректно",[3011,27685,27686],{},"Тема перемикається без помилок",[3011,27688,27689],{},"Код організований з використанням MVVM",[3000,27691,27693],{"id":27692},"рівень-2-dashboard-з-даними-4-6-годин","Рівень 2: Dashboard з даними (4-6 годин)",[2964,27695,27696,27698],{},[2983,27697,27618],{},": Створити dashboard з картками, графіками, та таблицею даних.",[2964,27700,27701,3165],{},[2983,27702,27624],{},[4201,27704,27705,27708,27722,27739,27753,27756],{},[3011,27706,27707],{},"Створіть додаток з бічним меню (SideMenu) та кількома сторінками",[3011,27709,27710,27711],{},"Головна сторінка повинна містити:\n",[3008,27712,27713,27716,27719],{},[3011,27714,27715],{},"4 статистичні картки (Card) з різними метриками",[3011,27717,27718],{},"Графік активності (можна використати placeholder або інтегрувати LiveCharts)",[3011,27720,27721],{},"Timeline з останніми подіями",[3011,27723,27724,27725],{},"Сторінка \"Користувачі\" повинна містити:\n",[3008,27726,27727,27730,27733,27736],{},[3011,27728,27729],{},"DataGrid з даними користувачів (мінімум 50 записів)",[3011,27731,27732],{},"SearchBar для пошуку",[3011,27734,27735],{},"ComboBox для фільтрації за роллю",[3011,27737,27738],{},"Pagination для навігації по сторінках",[3011,27740,27741,27742],{},"Сторінка \"Налаштування\" повинна містити:\n",[3008,27743,27744,27747,27750],{},[3011,27745,27746],{},"PropertyGrid для редагування налаштувань",[3011,27748,27749],{},"Перемикач теми",[3011,27751,27752],{},"Вибір мови (англійська/українська)",[3011,27754,27755],{},"Реалізуйте навігацію між сторінками через SideMenu",[3011,27757,27758],{},"Додайте NotificationArea для системних повідомлень",[2964,27760,27761,3165],{},[2983,27762,27675],{},[3008,27764,27765,27768,27771,27774,27777],{},[3011,27766,27767],{},"Dashboard виглядає професійно",[3011,27769,27770],{},"Навігація працює плавно",[3011,27772,27773],{},"Фільтрація та пошук працюють коректно",[3011,27775,27776],{},"Pagination відображає правильну кількість сторінок",[3011,27778,27779],{},"Код організований з використанням MVVM та Services",[3000,27781,27783],{"id":27782},"рівень-3-повноцінний-admin-panel-8-12-годин","Рівень 3: Повноцінний Admin Panel (8-12 годин)",[2964,27785,27786,27788],{},[2983,27787,27618],{},": Створити повноцінний admin panel з CRUD операціями, аутентифікацією, та advanced features.",[2964,27790,27791,3165],{},[2983,27792,27624],{},[4201,27794,27795,27809,27823,27840,27857,27873,27887],{},[3011,27796,27797,27798],{},"Створіть систему аутентифікації:\n",[3008,27799,27800,27803,27806],{},[3011,27801,27802],{},"Login вікно з анімацією",[3011,27804,27805],{},"Валідація credentials",[3011,27807,27808],{},"Збереження сесії",[3011,27810,27811,27812],{},"Головне вікно з:\n",[3008,27813,27814,27817,27820],{},[3011,27815,27816],{},"SideMenu з іконками та вкладеними пунктами",[3011,27818,27819],{},"Header з аватаром користувача (Gravatar) та кнопкою виходу",[3011,27821,27822],{},"Breadcrumb для навігації",[3011,27824,27825,27826],{},"CRUD для користувачів:\n",[3008,27827,27828,27831,27834,27837],{},[3011,27829,27830],{},"DataGrid з можливістю сортування та фільтрації",[3011,27832,27833],{},"Діалог для створення/редагування користувача",[3011,27835,27836],{},"Підтвердження видалення через MessageBox",[3011,27838,27839],{},"Експорт даних у CSV/Excel",[3011,27841,27842,27843],{},"CRUD для продуктів:\n",[3008,27844,27845,27848,27851,27854],{},[3011,27846,27847],{},"WaterfallPanel для відображення продуктів у вигляді карток",[3011,27849,27850],{},"ImageSelector для завантаження зображень продуктів",[3011,27852,27853],{},"ColorPicker для вибору кольору продукту",[3011,27855,27856],{},"Rate для рейтингу",[3011,27858,27859,27860],{},"Сторінка статистики:\n",[3008,27861,27862,27864,27867,27870],{},[3011,27863,26386],{},[3011,27865,27866],{},"CircleProgressBar для відображення метрик",[3011,27868,27869],{},"Gauge для показників",[3011,27871,27872],{},"Timeline для історії змін",[3011,27874,27875,27876],{},"Налаштування:\n",[3008,27877,27878,27881,27884],{},[3011,27879,27880],{},"Власна тема з кастомними кольорами",[3011,27882,27883],{},"Збереження налаштувань у Settings",[3011,27885,27886],{},"Експорт/імпорт налаштувань",[3011,27888,27889,27890],{},"Advanced features:\n",[3008,27891,27892,27895,27898,27901],{},[3011,27893,27894],{},"Drawer для швидкого доступу до функцій",[3011,27896,27897],{},"Notification system з різними типами повідомлень",[3011,27899,27900],{},"Loading states для асинхронних операцій",[3011,27902,27903],{},"Error handling з відображенням помилок",[2964,27905,27906,3165],{},[2983,27907,27675],{},[3008,27909,27910,27913,27916,27919,27922,27925,27928,27931],{},[3011,27911,27912],{},"Додаток виглядає професійно та консистентно",[3011,27914,27915],{},"Всі CRUD операції працюють коректно",[3011,27917,27918],{},"Аутентифікація та авторизація реалізовані правильно",[3011,27920,27921],{},"Асинхронні операції не блокують UI",[3011,27923,27924],{},"Error handling покриває всі можливі сценарії",[3011,27926,27927],{},"Код організований з використанням MVVM, Services, Repository pattern",[3011,27929,27930],{},"Використано мінімум 30 різних контролів HandyControl",[3011,27932,27933],{},"Додаток має власну тему з кастомними кольорами",[2959,27935,27937],{"id":27936},"резюме","Резюме",[2964,27939,27940],{},"HandyControl — це найбільша бібліотека UI контролів для WPF з понад 80 компонентами, яка надає розробникам потужний інструментарій для створення сучасних desktop додатків. Бібліотека виникла в китайській open-source спільноті та швидко стала популярною завдяки великій кількості готових контролів, системі тем, та активній розробці.",[2964,27942,27943],{},"Основні переваги HandyControl — це велика колекція контролів (від базових кнопок до складних компонентів як WaterfallPanel, CompareSlider, WaveProgressBar), підтримка світлої та темної теми, можливість створення власних тем, та велика спільнота розробників. Бібліотека підходить для складних enterprise додатків, де потрібна велика різноманітність UI елементів.",[2964,27945,27946],{},"Основні недоліки — це документація переважно китайською мовою (хоча є англійські переклади), стиль, який не відповідає Windows 11 Fluent Design, великий розмір бібліотеки (~5-8 MB), та обмежена підтримка accessibility. Також деякі контроли можуть бути важчими за стандартні WPF, що впливає на performance.",[2964,27948,27949],{},"HandyControl найкраще підходить для внутрішніх корпоративних систем, admin панелей, CRM/ERP систем, dashboard додатків, та інших складних enterprise додатків, де важливіша функціональність, ніж точна відповідність Windows 11 дизайну. Для додатків, які повинні виглядати нативно на Windows 11, краще використати WPF UI.",[2964,27951,27952],{},"Бібліотека добре інтегрується з MVVM pattern, підтримує data binding та commands, має систему валідації, та може працювати разом з іншими бібліотеками (наприклад, LiveCharts для графіків). Міграція існуючого WPF додатку на HandyControl може бути поступовою — не потрібно замінювати всі контроли одразу.",[2977,27954,27956,27961,27966,27971,27976,27981,27986,27991,27996,28001],{"title":27955},"Словник термінів",[2964,27957,27958,27960],{},[2983,27959,7724],{}," — open-source бібліотека UI контролів для WPF з понад 80 компонентами",[2964,27962,27963,27965],{},[2983,27964,15214],{}," — система toast notifications у HandyControl",[2964,27967,27968,27970],{},[2983,27969,11462],{}," — бічне меню для навігації",[2964,27972,27973,27975],{},[2983,27974,9843],{}," — контейнер з elevation (тінь) для групування контенту",[2964,27977,27978,27980],{},[2983,27979,9525],{}," — панель з waterfall/masonry layout (як Pinterest)",[2964,27982,27983,27985],{},[2983,27984,16336],{}," — контрол для порівняння двох зображень",[2964,27987,27988,27990],{},[2983,27989,9129],{}," — прогрес бар з анімованою хвилею",[2964,27992,27993,27995],{},[2983,27994,7429],{}," — attached properties для додавання заголовків та placeholder до контролів",[2964,27997,27998,28000],{},[2983,27999,4432],{}," — клас для управління темами",[2964,28002,28003,28006],{},[2983,28004,28005],{},"Elevation"," — тінь, яка створює ефект підняття елемента над поверхнею",[2959,28008,28010],{"id":28009},"додаткові-ресурси","Додаткові ресурси",[2964,28012,28013,3165],{},[2983,28014,28015],{},"Офіційні ресурси",[3008,28017,28018,28028,28036,28044],{},[3011,28019,28020,28027],{},[28021,28022,28026],"a",{"href":28023,"rel":28024},"https://github.com/HandyOrg/HandyControl",[28025],"nofollow","GitHub репозиторій"," — вихідний код та Issues",[3011,28029,28030,28035],{},[28021,28031,28034],{"href":28032,"rel":28033},"https://handyorg.github.io/",[28025],"Офіційна документація"," — документація (переважно китайською)",[3011,28037,28038,28043],{},[28021,28039,28042],{"href":28040,"rel":28041},"https://github.com/HandyOrg/HandyControl/releases",[28025],"Demo додаток"," — завантажте HandyControlDemo для перегляду всіх контролів",[3011,28045,28046,28051],{},[28021,28047,28050],{"href":28048,"rel":28049},"https://www.nuget.org/packages/HandyControl/",[28025],"NuGet пакет"," — офіційний пакет",[2964,28053,28054,3165],{},[2983,28055,28056],{},"Community ресурси",[3008,28058,28059,28067,28075],{},[3011,28060,28061,28066],{},[28021,28062,28065],{"href":28063,"rel":28064},"https://github.com/HandyOrg/HandyControl/wiki",[28025],"HandyControl Wiki"," — додаткова документація",[3011,28068,28069,28074],{},[28021,28070,28073],{"href":28071,"rel":28072},"https://stackoverflow.com/questions/tagged/handycontrol",[28025],"Stack Overflow"," — питання та відповіді",[3011,28076,28077,28082],{},[28021,28078,28081],{"href":28079,"rel":28080},"https://www.reddit.com/r/wpf/",[28025],"Reddit r/wpf"," — обговорення WPF та бібліотек",[2964,28084,28085,3165],{},[2983,28086,28087],{},"Туторіали та статті",[3008,28089,28090,28098,28106],{},[3011,28091,28092,28097],{},[28021,28093,28096],{"href":28094,"rel":28095},"https://github.com/HandyOrg/HandyControl/wiki/Getting-Started",[28025],"HandyControl Getting Started"," — офіційний гайд для початківців",[3011,28099,28100,28105],{},[28021,28101,28104],{"href":28102,"rel":28103},"https://github.com/HandyOrg/HandyControl/wiki/Themes",[28025],"HandyControl Themes Guide"," — гайд по темах",[3011,28107,28108,28113],{},[28021,28109,28112],{"href":28110,"rel":28111},"https://github.com/topics/wpf-ui",[28025],"WPF UI Libraries Comparison"," — порівняння різних WPF бібліотек",[2964,28115,28116,3165],{},[2983,28117,28118],{},"Альтернативні бібліотеки",[3008,28120,28121,28128,28135,28142],{},[3011,28122,28123,28127],{},[28021,28124,26540],{"href":28125,"rel":28126},"https://github.com/lepoco/wpfui",[28025]," — Fluent Design для Windows 11",[3011,28129,28130,28134],{},[28021,28131,26543],{"href":28132,"rel":28133},"https://github.com/Kinnara/ModernWpf",[28025]," — Fluent Design для Windows 10",[3011,28136,28137,28141],{},[28021,28138,26546],{"href":28139,"rel":28140},"https://github.com/MahApps/MahApps.Metro",[28025]," — Metro стиль",[3011,28143,28144,28149],{},[28021,28145,28148],{"href":28146,"rel":28147},"https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit",[28025],"MaterialDesignInXamlToolkit"," — Material Design",[2964,28151,28152,3165],{},[2983,28153,28154],{},"Інструменти для розробки",[3008,28156,28157,28165,28173,28181],{},[3011,28158,28159,28164],{},[28021,28160,28163],{"href":28161,"rel":28162},"https://github.com/Live-Charts/Live-Charts",[28025],"LiveCharts"," — бібліотека для графіків",[3011,28166,28167,28172],{},[28021,28168,28171],{"href":28169,"rel":28170},"https://github.com/oxyplot/oxyplot",[28025],"OxyPlot"," — альтернативна бібліотека для графіків",[3011,28174,28175,28180],{},[28021,28176,28179],{"href":28177,"rel":28178},"https://github.com/CommunityToolkit/dotnet",[28025],"CommunityToolkit.Mvvm"," — MVVM toolkit від Microsoft",[3011,28182,28183,28188],{},[28021,28184,28187],{"href":28185,"rel":28186},"https://github.com/PrismLibrary/Prism",[28025],"Prism"," — framework для MVVM додатків",[28190,28191,28192],"style",{},"html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .s0P7L, html code.shiki .s0P7L{--shiki-light:#800000;--shiki-default:#808080;--shiki-dark:#808080}html pre.shiki code .sKtos, html code.shiki .sKtos{--shiki-light:#800000;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .sa4r_, html code.shiki .sa4r_{--shiki-light:#E50000;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .su9tN, html code.shiki .su9tN{--shiki-light:#0000FF;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .spJ8K, html code.shiki .spJ8K{--shiki-light:#008000;--shiki-default:#6A9955;--shiki-dark:#6A9955}html pre.shiki code .sCDza, html code.shiki .sCDza{--shiki-light:#AF00DB;--shiki-default:#CE92A4;--shiki-dark:#CE92A4}html pre.shiki code .sN1BT, html code.shiki .sN1BT{--shiki-light:#267F99;--shiki-default:#4EC9B0;--shiki-dark:#4EC9B0}html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .siwwj, html code.shiki .siwwj{--shiki-light:#001080;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}html pre.shiki code .sD7JJ, html code.shiki .sD7JJ{--shiki-light:#000000FF;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}",{"title":3084,"searchDepth":3196,"depth":3196,"links":28194},[28195,28198,28204,28210,28216,28221,28226,28232,28237,28242,28248,28253,28258,28263,28267,28273,28279,28284,28285],{"id":2961,"depth":3196,"text":2962,"children":28196},[28197],{"id":3002,"depth":3207,"text":3003},{"id":3066,"depth":3196,"text":3067,"children":28199},[28200,28201,28202,28203],{"id":3070,"depth":3207,"text":3071},{"id":3151,"depth":3207,"text":3152},{"id":3457,"depth":3207,"text":3458},{"id":4223,"depth":3207,"text":4224},{"id":4400,"depth":3196,"text":4401,"children":28205},[28206,28207,28208,28209],{"id":4404,"depth":3207,"text":4405},{"id":4920,"depth":3207,"text":4921},{"id":5413,"depth":3207,"text":5414},{"id":5862,"depth":3207,"text":5863},{"id":6171,"depth":3196,"text":6172,"children":28211},[28212,28213,28214,28215],{"id":6178,"depth":3207,"text":6179},{"id":7364,"depth":3207,"text":7365},{"id":8264,"depth":3207,"text":8265},{"id":8541,"depth":3207,"text":8542},{"id":9212,"depth":3196,"text":9213,"children":28217},[28218,28219,28220],{"id":9219,"depth":3207,"text":9220},{"id":9837,"depth":3207,"text":9838},{"id":10516,"depth":3207,"text":10517},{"id":10640,"depth":3196,"text":10641,"children":28222},[28223,28224,28225],{"id":10644,"depth":3207,"text":10645},{"id":11265,"depth":3207,"text":11266},{"id":11810,"depth":3207,"text":11811},{"id":12516,"depth":3196,"text":12517,"children":28227},[28228,28229,28230,28231],{"id":12520,"depth":3207,"text":12521},{"id":13575,"depth":3207,"text":13576},{"id":14345,"depth":3207,"text":14346},{"id":14723,"depth":3207,"text":14724},{"id":14824,"depth":3196,"text":14825,"children":28233},[28234,28235,28236],{"id":14828,"depth":3207,"text":14829},{"id":15030,"depth":3207,"text":15031},{"id":15141,"depth":3207,"text":15142},{"id":15204,"depth":3196,"text":15205,"children":28238},[28239,28240,28241],{"id":15208,"depth":3207,"text":15209},{"id":15591,"depth":3207,"text":15592},{"id":15994,"depth":3207,"text":15995},{"id":16164,"depth":3196,"text":16165,"children":28243},[28244,28245,28246,28247],{"id":16168,"depth":3207,"text":16169},{"id":16239,"depth":3207,"text":16240},{"id":16330,"depth":3207,"text":16331},{"id":16447,"depth":3207,"text":16448},{"id":16656,"depth":3196,"text":16657,"children":28249},[28250,28251,28252],{"id":16663,"depth":3207,"text":16664},{"id":16859,"depth":3207,"text":16860},{"id":16957,"depth":3207,"text":16958},{"id":17086,"depth":3196,"text":17087,"children":28254},[28255,28256,28257],{"id":17090,"depth":3207,"text":17091},{"id":19942,"depth":3207,"text":19943},{"id":22071,"depth":3207,"text":22072},{"id":25549,"depth":3196,"text":25550,"children":28259},[28260,28261,28262],{"id":25553,"depth":3207,"text":25554},{"id":25792,"depth":3207,"text":25793},{"id":26358,"depth":3207,"text":26359},{"id":26521,"depth":3196,"text":26522,"children":28264},[28265,28266],{"id":26794,"depth":3207,"text":3003},{"id":26844,"depth":3207,"text":26845},{"id":26878,"depth":3196,"text":26879,"children":28268},[28269,28270,28271,28272],{"id":26882,"depth":3207,"text":25788},{"id":27092,"depth":3207,"text":27093},{"id":27315,"depth":3207,"text":27316},{"id":27438,"depth":3207,"text":26748},{"id":27504,"depth":3196,"text":27505,"children":28274},[28275,28276,28277,28278],{"id":27508,"depth":3207,"text":26595},{"id":27536,"depth":3207,"text":27537},{"id":27560,"depth":3207,"text":27561},{"id":27584,"depth":3207,"text":27585},{"id":27608,"depth":3196,"text":27609,"children":28280},[28281,28282,28283],{"id":27612,"depth":3207,"text":27613},{"id":27692,"depth":3207,"text":27693},{"id":27782,"depth":3207,"text":27783},{"id":27936,"depth":3196,"text":27937},{"id":28009,"depth":3196,"text":28010},"Інтеграція HandyControl у WPF: 80+ сучасних контролів, Material Design стилі, темна тема, анімації, та повна екосистема для створення красивих додатків","md",null,{},{"title":1381,"description":28286},"OYGRCjraEjJXeGEvAJLxauZWMgIgdJAxfxIfBJyP0pc",[28293,28295],{"title":1377,"path":1378,"stem":1379,"description":28294,"children":-1},"Інтеграція WPF UI (Wpf.Ui) у додатки: сучасні контроли Windows 11, NavigationView, Mica/Acrylic ефекти, темна тема, та повна екосистема Fluent Design",{"title":1385,"path":1386,"stem":1387,"description":28296,"children":-1},"Розбираємо xmlns-простори імен, підключення власних класів у XAML, ResourceDictionary, StaticResource vs DynamicResource та організацію ресурсів у великих проєктах.",1777911643666]