Wpf mvvm binding ๋ฌธ์ œ

์ œ๊ฐ€ wpf ์—์„œ tab control์„ ์‚ฌ์šฉ์ค‘์—

1๋ฒˆ tab item์—์„œ datagrid ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ๋”๋ธ”ํด๋ฆญ ํ–ˆ์„๊ฒฝ์šฐ, ๊ทธ ๋ฐ์ดํ„ฐ ๊ฐ’์ด
2๋ฒˆ tab item์œผ๋กœ ์ด๋™์‹œํ‚ค๋ ค๋Š” ์ž‘์—…์„ ํ•˜๋Š”์ค‘์ž…๋‹ˆ๋‹ค.

public void MoveresultTab(object obj)
{
MainViewModel.ChangeResults = true;

        Time = Records[SelectedValue].Time; //records tab(1๋ฒˆtab)์— ์žˆ๋Š” time์„ ์˜ฎ๊ธฐ๊ธฐ
    }

์ €๋ ‡๊ฒŒ tab์„ ์ด๋™์‹œํ‚จ ํ›„,

public string _time ;
    public string Time
    {
        get { return _time; }
        set
        {
            _time = value;
            OnPropertyChanged("Time");
        }
    }

์ด๋ ‡๊ฒŒ ๋ฐ”์ธ๋”ฉ ์‹œ์ผœ๋†“์€ time์„ ์ ์šฉ์‹œํ‚ค๋ ค ํ–ˆ๋Š”๋ฐ

๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋ฉด _time, Time ๊ฐ’๋“ค์€ ๋ฐ”๋€Œ์–ด๋„ UI์—์„  ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋”๋ผ๊ตฌ์š”โ€ฆ ์™œ๊ทธ๋Ÿด๊นŒ์š” ใ… ใ… 

์ข‹์•„์š” 2

@๋จธํ”Œ๋Ÿฌ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค :smile:

ํ˜น์‹œ ์†Œ์Šค์ฝ”๋“œ ๋‚ด์šฉ์„ ์ข€ ๋” ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์œผ์‹ค๊นŒ์š”?
๊ฐ„์†Œํ™” ํ•ด์„œ ๋ณด์—ฌ์ฃผ์…”๋„ ์ข‹๊ณ ์š”.

๋””๋ฒ„๊น…์œผ๋กœ set Time ๊ฐ’์ด ๋ฌธ์ œ ์—†์Œ์€ ํ™•์ธํ•˜์…จ์œผ๋‹ˆ,
TabControl๊ณผ {Binding Time}์„ ํฌํ•จํ•˜๋Š” Xaml ํ™”๋ฉด์„ ๋ด์•ผ ์•Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ MoveresultTab() ํ•จ์ˆ˜๊ฐ€ ๋น„ํ•˜์ธ๋“œ ์ฝ”๋“œ์—์„œ ์‹คํ–‰ํ•˜๋‚˜์š”?
๋‚ด์šฉ์— MainViewModel.ChangeResults = true; ๊ฐ€ ์žˆ๋Š” ๊ฑธ๋กœ ๋ด์„  VM์€ ๋”ฐ๋กœ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ,
์ด๊ณณ์˜ Time์— ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ์š”.

๋น„ํ•˜์ธ๋“œ ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ XAML๊ณผ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ง€๋Š” cs ํŒŒ์ผ์ž…๋‹ˆ๋‹ค
(ex, MainWindow.xaml.cs).

๋งŒ์•ฝ ๋น„ํ•˜์ธ๋“œ ์ฝ”๋“œ์— ์“ฐ์…จ๋‹ค๋ฉด ํ•ด๋‹น ์ปจํŠธ๋กค์— ์ง์ ‘ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋น„ํ•˜์ธ๋“œ ์ฝ”๋“œ ์ž์ฒด๊ฐ€ VM์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋งจ ์•„๋ž˜์ชฝ์— ์“ฐ์‹  Time์„ MainViewModel์— ๋˜‘๊ฐ™์ด ์ •์˜ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„์š”.

์ข‹์•„์š” 1

TabControl TabStripPlacement=โ€œLeftโ€ HorizontalAlignment=โ€œLeftโ€ Height=โ€œ658โ€ Margin=โ€œ10,32,0,0โ€ VerticalAlignment=โ€œTopโ€ Width=โ€œ1294โ€
TabItem Header=โ€œDataโ€
Grid Background="#FFE5E5E5"
TextBlock HorizontalAlignment=โ€œLeftโ€ Height=โ€œ27โ€ Margin=โ€œ10,45,0,0โ€ Text="{Binding Time}" TextWrapping=โ€œWrapโ€ VerticalAlignment=โ€œTopโ€ Width=โ€œ113โ€ DataContext="{Binding page1}"/
/Grid
/TabItem
/TabControl

์ด๋ ‡๊ฒŒ xaml์„ ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค!์ฝ”๋“œ๋กœ ํ‘œ์‹œ

์ข‹์•„์š” 1

Time ๋งŒ MainViewModel ์˜ฎ๊ฒจ๋„ ์•ˆ๋˜๋„ค์š”โ€ฆ ๋งจ์ฒ˜์Œ _time = โ€œ1โ€ ์ด๋ ‡๊ฒŒ ํ•ด๋†“์œผ๋ฉด 1์€ ๋“ค์–ด๊ฐ€์žˆ๋Š”๋ฐ
๊ฐฑ์‹ ์ด ์•ˆ๋˜๋Š”๊ฑฐ๊ฐ™๊ธฐ๋„ํ•ด์š”โ€ฆ

์ข‹์•„์š” 1

@๋จธํ”Œ๋Ÿฌ ์ „์ฒด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค์ฃผ์‹œ๊ฑฐ๋‚˜ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์—…์„ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์ƒ˜ํ”Œ ๋งŒ๋“ค์–ด๋“œ๋ฆด ์ˆ˜ ์žˆ์–ด์š”!

๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์„œ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์งˆ๋ฌธ ์ž‘์„ฑํ•˜์‹ค ๋–„ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ๊ฐ€๋…์„ฑ ์žˆ๊ฒŒ ์˜ฌ๋ฆฌ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Markdown ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ ์ž‘์„ฑ ์š”๋ น

์ข‹์•„์š” 2

์ง€๊ธˆ ์ œ๊ฐ€์ƒ๊ฐํ•˜๋Š” ๋ฌธ์ œ๋Š”

tabcontrol ์—์„œ tab item1 ๋ฒˆ๊ณผ tabitem 2๋ฒˆ์„ ์„œ๋กœ ๋‹ค๋ฅธ ViewModel๊ณผ xaml ์„ ๋งŒ๋“ค๊ณ ,

tabItem 1๋ฒˆ์˜ datagrid์—์„œ ๋”๋ธ”ํด๋ฆญํ•œ๊ฒƒ์ด
tabitem 2๋ฒˆ์— ๊ทธ ์ •๋ณด๋“ค์ด ์ถœ๋ ฅ๋˜๊ฒŒ ํ•˜๋Š”๊ฑด๋ฐ

์ด ๋”๋ธ”ํด๋ฆญํ•˜๊ณ  ์ถœ๋ ฅ๋˜๊ฒŒ ํ•˜๋Š” ๊ณผ์ •์€ ๋˜๋‹ค๋ฅธ ViewModel์—์„œ ์‹คํ–‰์„ ํ•˜๊ฒŒ๋˜์–ด์„œ
์„œ๋กœ ๋ฐ”์ธ๋”ฉ๋œ๊ฒƒ๋“ค๋ผ๋ฆฌ ์˜ํ–ฅ์„ ๋ชป์ฃผ๋Š”๊ฑฐ๊ฐ™์•„์š”. static๋ง๊ณ  ๋‹ค๋ฅธ๋ฐฉ๋ฒ•์ด์žˆ๋‚˜์š”?

์ข‹์•„์š” 1

@๋จธํ”Œ๋Ÿฌ ์•„ํ•˜ ์•Œ๊ฒ ๋„ค์š”. :smile:
๋‘ ํƒญ์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ViewModel์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋ง์”€ํ•˜์‹  ๊ฒƒ ์ฒ˜๋Ÿผ static์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ Binding์„ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•˜๊ฒŒ ์ ‘๊ทผ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋”ฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ˜ํ”Œ ๋งŒ๋“ค์–ด๋“œ๋ฆด๊ฒŒ์š”.

๋„ˆ๋ฌด ์นœ์ ˆํ•˜์‹ญ๋‹ˆ๋‹คโ€ฆ! ์ƒ˜ํ”Œ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ด์š”!

์ข‹์•„์š” 1

์ƒ˜ํ”Œ ์˜ฌ๋ ค๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. :smile:

์„ค๋ช…์€ ์ด๋”ฐ๊ฐ€ ์•„๋ž˜ ๋” ์ ์–ด๋†“์„๊ฒŒ์š”.

์†Œ์Šค์ฝ”๋“œ

์ข‹์•„์š” 1

์›์ธ์„ ๋Œ€๋žต ์•Œ ๊ฒƒ ๊ฐ™์€๋ฐ ๋ญ”๊ฐ€ ๋ง๋กœ ์„ค๋ช…ํ•˜๊ธฐ ๊ต‰์žฅํžˆ ์–ด๋ ค์šด ์ผ€์ด์Šค๋„ค์š”โ€ฆ
Github ๊ฐ™์€ ๊ณณ์— ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ์…”์„œ ๋‹ค๋ฅธ ๋ถ„๊ป˜ ๋„์›€์„ ๋ฐ›๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.

์ข‹์•„์š” 1

์ฃผ์‹  ์ฝ”๋“œ ์ž˜ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ง€๊ธˆ ๋ดค๋Š”๋ฐ 1๊ฐœ์˜ xaml์—์„œ ์ž‘๋™ํ•˜๋Š”๊ฑฐ๋ž‘ tab๋งˆ๋‹ค ์„œ๋กœ๋‹ค๋ฅธ xaml์—์„œ ์ž‘์šฉํ•˜๋Š”๊ฒŒ ๊ฐ™์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ
ํ•œ๋ฒˆ ์ฐธ๊ณ ์‚ผ์•„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹คโ€ฆ!

์ข‹์•„์š” 1

@๋จธํ”Œ๋Ÿฌ
ํ•ด๋ณด์‹œ๊ณ  ๋” ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์†Œ์Šค ๊ณ„์† ๊ณ ์ณ๋ณผ๊ฒŒ์š”. :smile: