WPF DataGrid ์งˆ๋ฌธ

์•ˆ๋…•ํ•˜์„ธ์š”

WPF DataGrid ์‚ฌ์šฉ์ค‘์ธ๋ฐ ํ•œ๊ฐ€์ง€ ๋ฌธ์˜์ข€ ๋“œ๋ฆฝ๋‹ˆ๋‹ค

์˜ˆ๋ฅผ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ MyData ํด๋ž˜์Šค๋ฅผ DataGrid ์— ๋ฐ”์ธ๋”ฉ ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค

public class MyData
{
  public int Id {get;set;}
  public bool IsReadOnly {get;set;}
  public string Value {get;set;}
}

๊ทธ๋ฆฌ๊ณ  xaml ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค (MyData ๋ฐ”์ธ๋”ฉํ•˜์˜€์œผ๋ฉฐ xaml ์ฝ”๋“œ๋Š” ๊ฐ„๋žตํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค)

<DataGrid.Columns>
    <DataGridTextColumn Header="Id" IsReadOnly="True" Binding="{Binding Id}"/>
    <DataGridTextColumn Header="IsReadOnly" IsReadOnly="True" Binding="{Binding IsReadOnly}"/>
    <DataGridTextColumn Header="Value" IsReadOnly="False" Binding="{Binding Value}"/>
</DataGrid.Columns>

์—ฌ๊ธฐ์„œ ๊ถ๊ธˆํ•œ๊ฑด

MyData ์˜ IsReadOnly ์˜ ๊ฐ’์—๋”ฐ๋ผ Value ์ปฌ๋Ÿผ์˜ ์ฝ๊ธฐ์ „์šฉ ์†์„ฑ์„ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•˜๊ณ ์‹ถ์€๋ฐ

ํ˜„์žฌ๋Š” ๊ทธ ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ์„œ ์ผ๋‹จ False ๋กœ ์ง€์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค

xaml ์ฝ”๋“œ์—์„œ Binding ์„ ์‚ฌ์šฉํ•˜๋ฉด DataGridTextColumn ์ด ํ‘œ์‹œํ•˜๋Š” ํ…์ŠคํŠธ๊ฐ’์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š”๊ฒƒ๊ฐ™์€๋ฐ

DataGridTextColumn ์˜ IsReadOnly ๊ฐ™์€ ์†์„ฑ์— MyData.IsReadOnly ๊ฐ’์„ ๋ฐ”์ธ๋”ฉ์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

False๋กœ ์ง€์ •ํ•ด์ค€ ๋ถ€๋ถ„์„ IsReadOnly๊ฐ€ Boolํ˜•์‹์ด๋‹ˆ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ํ•ด์ฃผ์‹ฌ๋ ๋“ฏํ•ด์š”

IsReadOnly="{Binding IsReadOnly}
1๊ฐœ์˜ ์ข‹์•„์š”

๋„ค ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

Model์˜ get์—์„œ bool๊ฐ’์œผ๋กœ readonly์˜ ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ๊ณ  view์—์„œ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์–ด๋–ค๊ฐ€์š”?

1๊ฐœ์˜ ์ข‹์•„์š”

xmal ์ฝ”๋“œ์—์„œ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ

๋ง์”€๋Œ€๋กœ ๋ชจ๋ธ์—์„œ IsReadOnly ๊ฐ’์„ ์„ค์ •ํ•œ์ฑ„๋กœ ๋ฐ”์ธ๋”ฉํ•ด๋„ ๋˜๊ฒ ๋„ค์š”

๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~~

1๊ฐœ์˜ ์ข‹์•„์š”