์๋
ํ์ธ์. WPF ๊ตฌํ ์ค ์ ์๋๋ ๋ถ๋ถ์ด ์์ด ์๊ฒฌ ์ฌ์ญ๊ณ ์ ๊ธ์ ์ฌ๋ฆฝ๋๋ค.
๋ค๋ฆ์ด ์๋๋ผ
Source์ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
MainModel โ MainViewModel โ MainWindow.xaml(VIEW)
MainWindow๋ด์๋ 6๊ฐ์ UserControl๋ก ๊ตฌ์ฑ ๋์ด์๋ UserControl์ด ์๊ณ ๊ทธ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
MainWindow.xaml ๋ด๋ถ Gridํ๋์ UserControlA.xaml ( UserControlB.xaml 6๊ฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ UserControl )
MainModel์์ Arrayํํ์ Struct ๋ณ์๋ฅผ MainWIndow๋ด UserControl ์ ๊ตฌ์ฑ ์์์ ๊ฐ๊ฐ binding์ ํ๊ณ ์ถ์๋ฐ, ( Struct์ ๊ฒฝ์ฐ ๋ด๋ถ์ ๋ค์์ ๋ณ์๋ฅผ ํฌํจํ๊ณ ์๊ณ ๋ํ์ ์ผ๋ก String Name ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. )
์๋ฅผ ๋ค์ด,
์ฒซ๋ฒ์งธ UserControlB.xaml ์ TextBox์ MainModel Struct[0]์ Name์
๋๋ฒ์งธ UserControlB.xaml์๋ TextBox์ MainModel Struct[1]์ Name์ โฆ
-
Window๋ด๋ถ์ ๋ค์ํ Page๋ก ๊ตฌ์ฑ๋์ด ์๋ ๊ฐ์ฒด์ arrayํํ๋ก ๋ฐ์ดํฐ๋ฅผ binding์ ํ๊ณ ์ถ์๋ฐ ๋ฐฉ๋ฒ์ด ์์๊น์?
-
WPF Binding์ ๊ฒฝ์ฐ ๊ฐ๋จํ ๋ถ๋ถ์ ํ ์ ์๊ฒ ๋๋ฐ ์กฐ๊ธ ๋ ๊ณ ๊ธ์ด๊ณ ์ค๋ฌด์์ ์ฌ์ฉํ๋ ์ฐธ๊ณ ํ ๋งํ ์์ ๋ opensource ์๊ณ ๊ณ์๋ฉด ๊ณต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ค๋ช
์ด ๋ค์ ๋์กํ๋ฐ ๋ต๋ณ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
2๊ฐ์ ์ข์์
๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ xaml์์ ํ๋์ฝ๋ฉ์ผ๋ก ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ง์ ์ ๊ทผํด์ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค.
<TextBlock Text="{Binding XXX[0].Name}"/>
<TextBlock Text="{Binding XXX[1].Name}"/>
๋๋
<Grid DataContext="{Binding MainModel Struct[0]}">
<TextBlock Text="{Binding Name}"/>
</Grid>
<Grid DataContext="{Binding MainModel Struct[1]}">
<TextBlock Text="{Binding Name}"/>
</Grid>
์ถ๊ฐ๋ก ํ์ฌ ์ฝ๋๋ฅผ ๊ณต์ ํด ์ฃผ์๋ฉด ๋ต๋ณ์ ๋ ๋์์ด ๋ ๋ฏ ํฉ๋๋ค.
4๊ฐ์ ์ข์์
dimohy
3
๋ง์ดํฌ๋ก์ํํธ์ ๋ฌธ์๋ง ๋ณด์
๋ ์ ๋ฐ์ ์ธ ์ดํด๋ฅผ ํ์ค ์ ์์ต๋๋ค. ์ ์ค๋ช
๋์ด ์์ต๋๋ค.
ํต์ฌ์ DataContext์ธ๋ฐ ์์ ์ปจํธ๋กค์๋ง (์๋ฅผ ๋ค์ด Window) ์ง์ ํ๋ฉด ๊ทธ ํ์ ์ปจํธ๋กค์๋ ์๋์ผ๋ก ๋์ผํ DataContext๊ฐ ์ ์ฉ๋ฉ๋๋ค.
| MainWindow.xaml
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
}
| MainWindow.xaml
...
<Grid>
<local:UserControlA />
</Grid>
...
| UserControlA.xaml
...
<StackPanel Orientation="Vertical">
<local:UserControlB DataContext="{Binding Models[0]}" />
<local:UserControlB DataContext="{Binding Models[1]}" />
<local:UserControlB DataContext="{Binding Models[2]}" />
<local:UserControlB DataContext="{Binding Models[3]}" />
<local:UserControlB DataContext="{Binding Models[4]}" />
<local:UserControlB DataContext="{Binding Models[5]}" />
</StackPanel>
...
| UserControlB.xaml
...
<Label Content="{Binding Name}" />
...
์ด๋ ๊ฒ ๊ตฌ์ฑํ๊ณ MainViewModel์ ๋ค์์ฒ๋ผ ๋ง๋ค์์ ๋,
| MainViewModel.cs
public class MainViewModel
{
public MainModel[] Models { get; } = new MainModel[]
{
new() { Name = "Model1" },
new() { Name = "Model2" },
new() { Name = "Model3" },
new() { Name = "Model4" },
new() { Name = "Model5" },
new() { Name = "Model6" },
};
}
| MainModel.cs
public class MainModel
{
public string Name { get; set; } = string.Empty;
}
๋ค์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.

2๊ฐ์ ์ข์์
์คํ์ค๋ฒํ๋ก์ฐ์์๋ ๋ฐ์ธ๋ฉ ๊ด๋ จํด์ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ ํ์ธํ ์ ์์ต๋๋ค. 
2๊ฐ์ ์ข์์
์น์ ํ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
1๊ฐ์ ์ข์์
ํญ์ ์น์ ํ๊ณ ์ธ๋ถ์ ์ผ๋ก ๋ต๋ณํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ํฐ ๋์์ด ๋ฉ๋๋ค!
1๊ฐ์ ์ข์์
์ข์ ์ ๋ณด ๊ณต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!!
1๊ฐ์ ์ข์์