# HiVision Invitation Seminar [![English](https://img.shields.io/badge/docs-English-blue.svg)](20241017.md) [![中文](https://img.shields.io/badge/docs-中文-red.svg)](20241017.zh-CN.md) [![한국어](https://img.shields.io/badge/docs-한국어-green.svg)](20241017.ko.md)

A 4-hour and 30-minute seminar held at HiVision Co., Ltd. on Thursday, October 17, 2024 (13:30~18:00).

The seminar deeply covered WPF project architecture and cross-platform expansion strategies to MacOS and Linux environments using UnoPlatform.

<img src="https://github.com/user-attachments/assets/4d5cdcd1-a5cb-4731-b554-2dd4d6ae5843" width="49%"/>
<img src="https://github.com/user-attachments/assets/51906276-49e5-43ae-bdb1-62a9812a1968" width="49%"/>

## Speaker Introduction
- Speakers: Jaewoong Lee [Microsoft MVP](https://mvp.microsoft.com/en-US/MVP/profile/5ca6ccaf-1cb4-ed11-b596-000d3a1ad36b), Yang Gu [Microsoft MVP](https://mvp.microsoft.com/en-US/MVP/profile/ca186d6d-b3c7-428b-aab1-9479a4145041)
- GitHub: https://github.com/jamesnet214, https://github.com/vickyqu115

[View Complete List of Enterprise Invitation Seminars](https://github.com/jamesnetgroup/jamesnet-enterprise-seminar)

## Table of Contents
- [x] XAML-Based Cross-Platform Transition Strategy
- [x] Frameworks, Libraries
- [x] MVVM
- [x] Resources
- [x] CustomControl
- [x] Template
- [x] ContentPresenter
- [x] ItemsControl Design
- [x] TreeViewItem Recursive Hierarchy Design
- [x] Project Decentralization Design
- [x] Framework Version Selection Strategy
- [x] Bootstrapper Design
- [x] View/Control Modularization Strategy
- [x] View Injection Design
- [x] MenuManager Design Strategy
- [x] Common Library Design Strategy
- [x] Custom Dependency Injection Design Strategy
- [x] Reference Material Utilization and Learning Research Strategy
- [x] Strategy for Transitioning from WPF Base to UnoPlatform

## Detailed Part Items
Each part covers the following detailed items. You can see at a glance what content was covered.

#### XAML-Based (Platforms)
- WPF
- ~Silverlight~
- Xamarin (C)
- UWP
- WinUI3
- MAUI (C)
- UnoPlatform (C)
- AvaloniaUI (C)
- OpenSilver (C)

#### Frameworks, Libraries
- Prism.Unity
- CommunityToolkit.Mvvm

#### MVVM
- DataContext
- Binding

#### Resources
- Application
- Resources
- ResourceDictionary
- StaticResource
- DynamicResource

## CustomControl
- Control
- ContentControl
- ItemsControl

## Template
- ControlTemplate
- DataTemplate

#### Button
- Content
- ContentPresenter

#### ListBox/ListBoxItem
- GetContainerForItemOverride
- ItemsPresenter

#### TreeView/TreeViewItem
- Recursive ItemsSource
- Event Method

#### Project Design
- Framework/Core
- Essential Libraries
- Project Dependency System
- Application

#### Framework
- .NET Standard 2.0
- Common Library Strategy
- Dependency Injection
- MVVM
- View Injection
- etc...

#### Bootstrapper Design
- Dependency Injection Registration
- Singleton/Instance
- View Injection
- ViewModel Relationship Registration

###### Main/Forms
- Project Decentralization Strategy
- Singleton Registration
- Project Folder Structure
- Consideration for Extensibility
- Immutable Structure Application
- WPFContent

#### Layer (Area for View Injection)
- ContentControl
- Singleton Management
- View Injection (Bootstrapper)
- View Injection (Reservation, Mapping)
 
#### Menu
- Menu Implementation Control Method
- Non-hierarchical Modularization
- Project Decentralization
- Efficient Logic Distribution and Management
- View Injection (Immediate, Show)

#### MenuManager
- Singleton Management
- Centralized Management
- Dependency Injection and Callback Utilization

#### Support
- Role
- Extension-Strong Folder Structure
- Interface
- Project Dependencies

#### Constructor-based Dependency Injection
- Reflection
- ViewModel
- View
- Singleton/Instance

## Project Decentralization
- Logical Decentralization
- Loose UI Layer Formation
- Architecture Design Based on Purpose and Need Rather Than Fixed Patterns

## Popup
- Layer Overlap Utilization
- Flexible Configuration Ignoring UI Hierarchy

## Settings Window
- New Pattern, Flexible Response
- Project Decentralization That Changes According to Scale and Size

## Reference Materials
Below are the reference material items related to this seminar.
#### Main Reference Repositories
- [League of Legends WPF](https://github.com/jamesnetgroup/leagueoflegends-wpf)
- [League of Legends WinUI 3](https://github.com/jamesnetgroup/leagueoflegends-winui3)
- [League of Legends UnoPlatform](https://github.com/jamesnetgroup/leagueoflegends-uno)
- [DynamicResource Theme](https://github.com/JamesnetGroup/dynamic-theme)

#### Channel References
- [YouTube: Jamesnet](https://youtube.com/@jamesnet214)
- [Website: Jamesnet](https://jamesnet.dev)
- [Bilibili: 小李趣味多](https://space.bilibili.com/688707261?spm_id_from=333.1007.0.0)

#### Book Introduction: WPF INSIDE OUT
- By Jaewoong Lee, [Yang Gu MVP](https://mvp.microsoft.com/en-US/MVP/profile/ca186d6d-b3c7-428b-aab1-9479a4145041)
- [E-book Platform](https:/jamesnet.dev/store)
- [YouTube Practice Video](https://www.youtube.com/watch?v=2PuvhTEcWAQ&feature=youtu.be)

#### WPF Tutorial (CustomControl)
- [Theme Switch](https://jamesnet.dev/article/121/Korean)
- [Riot PlayButton](https://jamesnet.dev/article/123/Korean)
- [Navigation Bar](https://jamesnet.dev/article/124/Korean)
- [Riot Slider](https://jamesnet.dev/article/126/Korean)
- [Smart Date](https://jamesnet.dev/article/127/Korean)
- [Cupertino TreeView](https://jamesnet.dev/article/160/Korean)

#### WPF Education 48 Hours (Full Video)
- [KakaoTalk Design (1/4)](https://jamesnet.dev/article/54/Korean)
- [KakaoTalk Design (2/4)](https://jamesnet.dev/article/85/Korean)
- [KakaoTalk Design (3/4)](https://jamesnet.dev/article/88/Korean)
- [KakaoTalk Design (4/4)](https://jamesnet.dev/article/86/Korean)
  
<br/>

- [CustomControl Architecture (1/4)](https://jamesnet.dev/article/87/Korean)
- [CustomControl Architecture (2/4)](https://jamesnet.dev/article/89/Korean)
- [CustomControl Architecture (3/4)](https://jamesnet.dev/article/94/Korean)
- [CustomControl Architecture (4/4)](https://jamesnet.dev/article/91/Korean)

<br/>

- [WPF INSIDE OUT Book (1/4)](https://jamesnet.dev/article/92/Korean)
- [WPF INSIDE OUT Book (2/4)](https://jamesnet.dev/article/90/Korean)
- [WPF INSIDE OUT Book (3/4)](https://jamesnet.dev/article/93/Korean)
- [WPF INSIDE OUT Book (4/4)](https://jamesnet.dev/article/108/Korean)

#### Past Seminar Reference Materials
- [October Regular WPF Seminar (Microsoft)](https://jamesnet.dev/article/34)
- [Past Seminar List](https://jamesnet.dev/article/menu/6/order/recent)