์๋
ํ์ธ์ ๊ฐ๋์ WPF ํ๋ก์ ํธ๋ฅผ ํ๋ ์ฌ๋์
๋๋ค.
WPF๋ Prism ์ ์ฃผ๋ก ์ฐ๋๋ฐ ์ฒ์์๋ ๋ง์ด ํค๋งธ์ง๋ง
์ด์ ์ด๋์ ๋ ๋ค๋ฃฐ์ค ์๊ณ ๊ฑฐ์ ์ด๊ฒ๋ง์ ์ฐ๋ค๊ฐ
๋ท๋ท๋ฐ๋ธ์์ Community Toolkit ์ ์๊ฒ๋์ต๋๋ค.
๊ทธ์ ์๋ ๊ฒ์ํ๋ค๊ฐ ๋ณด๊ณ ๋ญ๊ฐ ํ๋๋ฐ ๋น์ทํ
Fw์ธ๊ฐ ๋ณธ๋ฐ ? ์ฐ์ด์ ๊ฐ๋ฆฌ๊ธฐ ํ๋ค์ง๋ ๋ชจ๋ฅด์ง๋ง
์ฃผ๋ก C/T ๋ฅผ ๋ง์ด์ฐ๋์?? ์ ์ง Prism ํฐ ์ธ๊ธ์ด ์๋๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค์
Prism ์ ์ธ๋ View๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํ๊ณ life cycle ๊ด๋ฆฌ๊ฐ ์๋ฌด๋๋ wpf์
์ต์ ํ๋ fw ๋ผ ๊ฐ๋
์ ์๋ฉด ํธ๋ฆฌํ๋๋ฐ ๋ฐ๋ฉด C/T ๊ฐ ๋ค๋ฅธ ์ฅ์ ์ด ์์๊น ๊ถ๊ธํ๋ค์?
C/T๋ฅผ ๋๋ต์ ์ผ๋ก ๋ดค์๋ IOC ์ฑํฅ์ด ๊ฐํ FW๊ฐ์๋ฐ Prism ์ Resion ๊ฐ์๊ฒ๋ ์๋์?
๊ฐ์ธ์ ์ผ๋ก
Prism
๊ณผ .NET Community Toolkit
์ ๋น๊ต ์์ฒด๋ ๋ง์ง ์๋ค๊ณ ์๊ฐ ํฉ๋๋ค.
๊ทธ ์ด์ ๋
.NET Community Toolkit
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ WPF์์ MVVM ์ค๊ณ๋ฅผ ์ํ MVVM ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฉฐ,
Prism
์ CAB(Composite UI Application Block) ์ค๊ณ๋ฅผ ๋ชฉํ๋ฅผ ํ ํ๋์ ์์ ํ๋ ์์ํฌ์ ํด๋น ๋ฉ๋๋ค.
๊ทธ ๋งํผ Prism
์ ์์ฒญ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ง์ํ๊ณ ์๊ณ , MVVM ๊ด๋ จ ๊ธฐ๋ฅ๋ Prism
์ ๋ง์ ๊ธฐ๋ฅ ์ค ํ๋๋ก ์ ๊ณต ๋๋ ๋ถ๋ถ ์
๋๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ์ ํฉํ๋ค๊ณ ํ๋จ ๋ฉ๋๋ค.
.NET Community Toolkit :
์ค.์ ๊ท๋ชจ์ ํ๋ก์ ํธ๋ก ํ๋ฉด์ด ๋ง์ง ์๊ณ ํ๋ฉด ๋ด UI๊ฐ ๋ณต์กํ์ง ์์ ํ๋ก์ ํธ์์ MVVM ์ํคํ ์ฒ ์ค๊ณ๋ก ๊ฐ๋ฐ๋๋ ํ๋ก์ ํธ์ ๋ฑ ๋ง ์ต๋๋ค.
Prism :
Prism
์์ฒด๋ ํฌ๊ณ ๋ฌด๊ฒ์ต๋๋ค.
๋๋ฌธ์ ๋๊ท๋ชจ์ ํ๋ก์ ํธ๋ก ํ๋ฉด์ด ๋ค์ ๋ณต์กํ๊ฑฐ๋, ๋ชจ๋ ํ์์ผ๋ก ๊ด๋ฆฌ๋์ UI๋ ๊ธฐ๋ฅ์ด ์ฐจ๋ณํ ๋์ ํจํค์ง ๋์ด์ผ ํ๋ ํ๋ก์ ํธ (์คํ ๋ค๋, ํ๋กํ์
๋, ์ํฐํ๋ผ์ด์ฆ ๋ฒ์ ๊ฐ์ด ๋ฑ๊ธ์ ๋ฐ๋ผ UI๊ฐ ๋ค๋ฅด๊ณ ๊ธฐ๋ฅ์ด ๋ค๋ฅธ) ์ฑ๊ฒฉ์ ์ด์ธ๋ฆฝ๋๋ค.
.NET Community Toolkit
์
๋ทฐ๋ชจ๋ธ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฉ์ ์
์์กด์ฑ ์ฃผ์
์ฒ๋ฆฌ๋ฅผ ์ํ IoC์ง์
ํธ๋ฆฌํ ์ฝ๋ ์ ๋๋ ์ดํธ ๊ธฐ๋ฅ (NotifyPropertyChanged ์์ฑ ์๋ ๊ตฌํ ๋ฑ) ๋ฑ
MVVM ์ํคํ
์ฒ ์ค๊ณ์ ๊ผญ ํ์ํ๊ณ ํธ๋ฆฌํ ๊ธฐ๋ฅ ์์ฃผ๋ก ์ง์ ๋๊ณ ์๊ณ ,
(๋๋ฌธ์ Prism์ Regions ๊ฐ์ ๊ธฐ๋ฅ์ ์์ต๋๋ค.)
Prism
์
์ ๊ธฐ๋ฅ์ ๋ชจ๋ ํฌํจํ๊ณ ๋๋ถ์ด CAB ๊ตฌ์กฐ ํํ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅํ๋๋ก ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค.
์ฒจ์ธ์ ๋ ๋๋ฆฌ์๋ฉด, ์์ด์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
Prism์ ๋ชจ๋ฅด๊ฒ ์ผ๋ CommunityToolkit์ ์์ค ์ ๋ค๋ ์ดํฐ๋ฅผ ์ด์ฉํด ์ฝ๋๊ฐ ๊ฐ์ํ๋๋ ๋ถ๋ถ์ Prism๊ณผ ์์ด์ ์ฌ์ฉํด๋ ๋๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์ถ๊ฐ๋ก, .NET Community Toolkit
์์
์ด ๋ถ๋ถ Prism
์ Regions ๋
ContentControl ์ DataType์ ๋งคํํด์ ๊ฐ์ ์ฉ๋๋ก ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค.