Chan
1
์๋
ํ์ธ์ Socketํต์ ๊ณผ InotifypropertyChanged ์์ฑ์ ๋ํด์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
Socket ํต์ ์๋ํด ์์ง ๊ณต๋ถ์ค์ด๊ณ ์ค๋ ฅ์ด ๋ง์ด ๋ถ์กฑํ์ง๋ง ์ฌ๊ธฐ์ ๊ธฐ ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ฉด์ ์ค์ค๋ก ๊ณต๋ถ์ค์ ์์ต๋๋ค.
๊ณต๋ถํ๋ ์ค InotifypropertyChanged์์ฑ์ ๋ํด ์๊ฒ ๋์๊ณ ์ด ์์ฑ์ด ์ด๋ ํ ์ญํ ์ํ๋์ง๋ ์์ธํ๋ ๋ชจ๋ฅด์ง๋ง
์์ฑ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ค๋ฅธ ํญ๋ชฉ์ด ์๋์ผ๋ก ์
๋ฐ์ดํธ๋ฅผ ํด์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก๋ง ์๊ณ ์์ต๋๋ค.
๊ตฌํํ๊ณ ์ถ์ ๋ด์ฉ
Send๋ผ๋ ๋ฒํผ์ ์ด๋ฒคํธ ๋์์ด ๋ฐ์ํ์ ๋ ์ ์ ์
๋ ฅ๋ ๋ด์ฉ๋ค๊ณผ ๊ฐ์ด ๋ณด๋ด์ง๋๋ก ํ๋ ๊ฒ๋๋ค.
ํ์ฌ Send๋ฒํผ์ ๋๋ฅด๋ฉด ์ ์ ์
๋ ฅ๋ ๋ด์ฉ์ด ๊ทธ๋๋ก ๋จ์์์ต๋๋ค.
- (์ํฐํค๋ฅผ ์
๋ ฅํ์๋ ๋ฉ์์ง๊ฐ ์ ์ก๋๋ ์ด๋ฒคํธ์ ์์ฑ๋ ์กด์ฌํ๋์?)
์๊ณ ์ถ์ ๊ฒ
INotifyPropertyChanged ์์ฑ์ ๋ํด ์ข ์์ธํ ์๊ณ ์ถ์ต๋๋ค.
๊ฒ์ํด์ ์ฐพ์๋ณด์์ง๋ง ์ ์ดํด๊ฐ ๋์ง ์์ ์ง์ ๋๋ฆฝ๋๋ค. ์์ ํ๋ก์ ํธ์์ ๋ฐ์ํ๋ INotifyPropertyChanged
๋์๋ฐฉ์?( )
์์ฑ์ ๋ํด์ ์ค๋ช
ํด์ฃผ์๋ฉด ๋๋ฌด๋ ๊ฐ์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์์ฑํ ํ๋ก์ ํธ์ zipํ์ผ์
๋๋ค.

3๊ฐ์ ์ข์์
์ํ์๋ ๋ถ๋ถ์ด Send ๋ฒํผ์ ๋๋ ์ ๋, Send ๋ฒํผ ์ข์ธก์ ์์นํ ๋ฉ์์ง๋ฅผ ์
๋ ฅํ๋ ํ
์คํธ ๋ฐ์ค๋ฅผ ๋น์ฐ๊ณ ์ ํ์๋ ๊ฒ ๋ง๋์?
๋ง๋ค๋ ๊ฐ์ ํ์ ์๋ ๋ด์ฉ์ ์ ์ต๋๋ค.
INotifyPropertyChanged๋ ๋ฌด์์ธ๊ฐ?
INotifyPropertyChanged๋ ์ด๋ฆ ๊ทธ๋๋ก ์์ฑ์ด ๋ณ๊ฒฝ๋์์์ ์๋ฆฌ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. INotifyPropertyChanged ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ ์์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ๋ฐ์ํ๋ PropertyChanged๋ผ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ธ๋ถ์์ ์ด ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋
ํด ์์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
WPF์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์์ INotifyPropertyChanged์ ์ญํ
WPF์์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์, PropertyChanged ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ธ์ ๊ตฌ๋
ํ๋ ์์
์ด ์ํ๋ฉ๋๋ค. ์ฆ PropertyChanged๊ฐ ๋ฐ์ํ ๋ EventArgs๋ก ๋ณ๊ฒฝ๋ ์์ฑ์ ์ด๋ฆ์ ๋ฐ๊ณ , ๋ณ๊ฒฝ๋ ์์ฑ์ ๊ฐ์ ๊ฐ์ ธ์ ํด๋น ์์ฑ๊ณผ ๋ฐ์ธ๋ฉ๋ DependencyProperty์ ๋ฐ์ํ๋ ๊ฒ์
๋๋ค.
- ์ฐธ๊ณ : INotifyPropertyChanged ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ง ์๋๋ผ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์์ฒด๋ ์๋ํฉ๋๋ค. ๋ค๋ง ๊ฐํ ์ฐธ์กฐ๋ก ๋์ํ๋ฏ๋ก ์์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์
๋ฐ์ดํธ์ ๋ฌธ์ ๊ฐ ์๊ณ , ์ด์ ๊ฒ์๋ฌผ์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ํ ์ฝ๋์์ ๋ฉ์์ง ๋ฐ์ค๊ฐ ์
๋ฐ์ดํธ๋๋ ๊ณผ์
์์ฑ์๋๊ป์ ์ฌ๋ฆฌ์ ์์ค์์ ๋ฉ์์ง ๋ฐ์ค(TextBox์ Text ์์ฑ)์ ๋ฐ์ธ๋ฉ๋ ์์ฑ์ msg(msg1)์ด๋ฏ๋ก, TextBox์ Text ์์ฑ์ ๊ฐ์ msg ์์ฑ์ ๊ฐ์, msg ์์ฑ์ ํ๋ ๋ณ์ _txtInput์ ๊ฐ์ ๋ฐ๋ผ๊ฐ๋ฉฐ, msg ์์ฑ์ด ๋ณ๊ฒฝ๋์๋ค๋ PropertyChanged ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฆ ์๋์ ๊ฐ์ ์ ์ฐจ๋ก ๋์ํฉ๋๋ค.
- _txtInput ๊ฐ ๋ณ๊ฒฝ
- ์
๋ฐ์ดํธ๋ฅผ ์ํ๋ ์์ (BtnSendAll_Clilck)์ PropertyChanged ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํด(๋ณ๊ฒฝ ์์ฑ ์ด๋ฆ: msg)
- msg์ Binding Target(TextBox.Text)์์ msg์ ๊ฐ์ ํ์ธํ๊ธฐ ์ํด msg์ getter ํธ์ถ
- getter์์ _txtInput ๊ฐ ๋ฐํ
- Binding Target(TextBox.Text)์์ _txtInput ๊ฐ์ ๋ฐ์
์ผ๋ฐ์ ์ผ๋ก๋, ์ฒจ๋ถํ์ ์ํ ์ฝ๋์ฒ๋ผ ํ๋(_txtInput)์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ํด๋น ํ๋๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ(msg)์ ๋ํ PropertyChanged ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ๋ ๋ฉ์๋(NotifyPropertyChanged(โmsg1โ))๋ฅผ ํธ์ถํ๋ ๋ฒ๊ฑฐ๋ก์ด ๋ฐฉ๋ฒ๋ณด๋ค๋, ํ๋๋ ๋จ์ง ์์ฑ์ getter setter ๊ตฌํ์ ์ํ ์ฅ์น ์ ๋๋ก๋ง ์ด์ฉํ๊ณ ์์ฑ์ setter์์ ๊ฐ ๋ณ๊ฒฝ๊ณผ PropertyChanged ์ด๋ฒคํธ ๋ฐ์ ๋ฉ์๋๋ฅผ ์์ฐจ์ ์ผ๋ก ํธ์ถํจ์ผ๋ก์จ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ์ ์ฆ๊ฒจ ์ฌ์ฉํฉ๋๋ค. ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- msg ์์ฑ์ ๊ฐ ํ ๋น(msg = string.Empty ๋ฑ)
- msg setter ํธ์ถ
- _txtInput ๊ฐ ๋ณ๊ฒฝ
- msg์ ๋ํ PropertyChanged ์ด๋ฒคํธ ๋ฐ์
- msg์ Binding Target(TextBox.Text)์์ msg์ ๊ฐ์ ํ์ธํ๊ธฐ ์ํด msg์ getter ํธ์ถ
- getter์์ _txtInput ๊ฐ ๋ฐํ
- Binding Target(TextBox.Text)์์ _txtInput ๊ฐ์ ๋ฐ์
์ฒ์์ ์
๋ฐ์ดํธ๊ฐ ์ ๋ ์ด์
- Binding Source์ธ msg ์์ฑ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์์
- msg ์์ฑ์ ๋ํ PropertyChanged ์ด๋ฒคํธ๊ฐ ํธ์ถ๋์ง ์์์
msg์ ๊ฐ์ด null์ธ์ง, empty์ธ์ง ํ์ธํ๋ ๊ณผ์ ์ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ต๋๋ค. msg ์์ฑ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด์ผ(์ ํํ๋ setter๊ฐ ํธ์ถ๋์ด์ผ) PropertyChanged ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ , ๋ฐ์ธ๋ฉ๋ TextBox์์ ์์ฑ ๊ฐ ๋ณ๊ฒฝ์ ๊ฐ์งํด ๋ณ๊ฒฝ ๋ถ๋ถ์ ์
๋ฐ์ดํธ ํ ํ
๋ฐ, setter๊ฐ ํธ์ถ๋์ง ์์ผ๋ ์
๋ฐ์ดํธ ์ญ์ ๋์ง ์๋ ๊ฑฐ์ฃ . ๋ ๋ฒ์งธ ์ฝ๋์์๋ BtnSendAll_Clilck ๋ฉ์๋์์ msg1 = string.Empty โ ์ ๋ผ์ธ์ ํตํด msg1์ setter๊ฐ ํธ์ถ๋์ด ์์ฑ ๊ฐ(์ ํํ๋ getter์์ ์ฐธ์กฐํ๋ _txtInput ํ๋์ ๊ฐ)๋ ๋ณ๊ฒฝ๋๊ณ , PropertyChanged ์ด๋ฒคํธ๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์์ฑ ๊ฐ ๋ณ๊ฒฝ๋ ์๋ฆฌ๋๊น ์ํ์๋ ๋ถ๋ถ์ด ๊ตฌํ๋ ๊ฒ์ด๊ตฌ์.
๊ฒฐ๋ก
- ์ฒซ ๋ฒ์งธ ์ํ์ฝ๋์์ ๋ฉ์์ง ๋ฐ์ค๊ฐ ๋น์์ง์ง ์์ ๊ฒ์ ๋ฉ์์ง ๋ฐ์ค์ ๋ฐ์ธ๋ฉ๋ msg ์์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง๋ ์์๊ณ , msg ์์ฑ์ด ๋ณ๊ฒฝ๋์์์ ์๋ฆฌ๋ PropertyChanged ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง๋ ์์์ ๊ทธ๋ ๋ค.
- ๋ ๋ฒ์งธ ์ํ์ฝ๋์์๋ BtnSendAll_Clilck ๋ฉ์๋ ๋ด์์ msg1 ์์ฑ์ ๊ฐ์ ํ ๋นํ๊ธฐ๋ ํ๊ณ , ํ ๋น ๊ณผ์ ์์ PropertyChanged ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํด์ View์ ๋ฐ์๋ ๊ฒ์ด๋ค.
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์์๋ ์์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋์๋์ง๋ฅผ ์๋ฆฌ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๊ณ , ๊ทธ ๋ฐฉ๋ฒ์ ๊ฐ๊ธ์ (๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ์ํ๋ฉด ์ฌ์ค์ ๋ฐ๊ฐ์ ๋ก) INotifyPropertyChanged ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํจ์ผ๋ก์จ ๋ฌ์ฑํด์ผ ํ๋ค.
- ์ํฐ ํค ์
๋ ฅ ์ ์ ์ก ๊ด๋ จ ๋ถ๋ถ์ wpf keydown event ๋ฑ์ ํค์๋๋ก ๊ฒ์ํด ๋ณด์๋ฉด ๊ธ๋ฐฉ ๋์ฌ ๊ฒ ๊ฐ๋ค์. ์๊ฒฉํ MVVM ํจํด ์ ์ฉ์ด ์๋๋ผ๋ฉด ์ฝ๋ ๋นํ์ธ๋๋ฅผ ์ ์ ํ ์ด์ฉํ๋ ์ ์์ ์ด๋ ต์ง ์๊ฒ ๊ตฌํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
7๊ฐ์ ์ข์์
Chan
4
์์ธํ ์ค๋ช
๊ณผ ์น์ ํ๊ฒ ๋ต๋ณ์ฃผ์
์ ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ต๋ณ์ฃผ์ ๋ด์ฉ์ ํ ๋๋ก ๊ณต๋ถํ๋ฉด์ ํ๋์ฉ ๋ฐฐ์๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค!
๊ฐ์ฌํฉ๋๋ค~
2๊ฐ์ ์ข์์