dependency property ์˜ getter setter

UserControl์— Dependecy Property๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
            nameof(logText), typeof(string), typeof(ConsoleControl), new PropertyMetadata(string.Empty));
        
        public string logText
        {
            get { return (string)GetValue(TextProperty); }
            set
            {
                var r = ProcessLogData(value);
               // SetValue(TextProperty,r); 
               SetValue(TextProperty,Value)
            }
        }

์›๋ž˜ ์ €์˜ ์ƒ๊ฐ์€ View์—์„œ ๊ฐ’์„ ํ•ด๋‹น ์†์„ฑ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋ฉด setter๊ฐ€ ๋™์ž‘ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, setter๋Š” ์ „ํ˜€ ๋™์ž‘ํ•˜์ง€ ์•Š๋„ค์š”.
setter์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ทธ๋‹ค์Œ์— SetValue๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋™์ž‘์›๋ฆฌ๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ‘๋‹ˆ๋‹ค.
ํ•ด์™ธ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ฐพ์•„๋ด๋„ dependency property๋Š” SetValue ์ž์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๋ง๋ฐ–์— ์—†์–ด์„œ.. ํ˜ผ๋ž€์ด ์˜ค๋„ค์š”..

๊ฒฐ๋ก ์€ Main์—์„œ ์†์„ฑ๊ฐ’์œผ๋กœ ๋„˜๊ฒจ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ userControl ๋น„ํ•˜์ธ๋“œ์—์„œ ๊ฐ€๊ณตํ•˜์—ฌ userControl์˜ TextBox์— ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€๋ฐ ๋ฐฉ๋ฒ•์ด ์—†๋‚˜์š”??

UserControl์˜ xaml์— ๋ฐ”์ธ๋”ฉ๊นŒ์ง„ ๋‹ค ํ•ด๋†จ์Šต๋‹ˆ๋‹ค. ๊ฐ€๊ณต ์—†์ด ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋˜๋Š”๊ฒƒ๊นŒ์ง„ ํ™•์ธ์ด ๋˜๋Š”๋ฐ, ๊ฐ€๊ณตํ•œ๋‹ค์Œ ๋ฐ”์ธ๋”ฉ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”..

๊ณ ์ˆ˜๋‹˜๋“ค์˜ ๋‹ต๋ณ€ ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ps.Setter ์•ˆ์— SetValue๋ฅผ ์ง€์›Œ๋„ UI ์— ๋ฐ์ดํ„ฐ๋Š” ์˜ฌ๋ผ๊ฐ€๋„ค์š”.. ์‹ ๊ธฐโ€ฆ

2 Likes

new PropertyMetadata(string.Empty)

์—ฌ๊ธฐ์— callback ์„ ์ค„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2 Likes

๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ ‘๊ทผํ•ด์•ผํ•  ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋“ค์„ static์œผ๋กœ ์„ ์–ธ์„ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ,
๋ฌด์กฐ๊ฑด ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉ์„ ํ•˜๋Š”๊ฒƒ์ด ๊ด€๋ก€์ธ๊ฐ€์š”?

2 Likes

์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋Š” static์ด์ง€๋งŒ DependencyObject๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ConsoleControl consoleControl = (ConsoleControl)d;

๋”ฐ๋ผ์„œ static ์„ ์–ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1 Like

DependencyProperty ๋Š” ์ผ๋ฐ˜ Property์™€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋™์ž‘๊ณผ ๊ฐœ๋… ์ž…๋‹ˆ๋‹ค.

DP๋ฅผ ์ •์˜ ํ• ๋•Œ DependencyProperty.Register ๋ฅผ ํ†ตํ•ด
์ •์˜ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ €๊ธฐ์„œ ์ง€์ •ํ•œ type์ด Key๊ฐ€ ๋˜์–ด DP ์ด๋ฆ„๊ณผ ํƒ€์ž…์˜ ํ•ด์‹œ์ฝ”๋“œ ์กฐํ•ฉ์œผ๋กœ

PropertyFromNameํ…Œ์ด๋ธ” ์ด๋ž€๊ณณ์— ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ–‰์œ„๋Š” ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ ๋˜๋Š” ์†์„ฑ๋“ค์€ ํ•œ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝ ํ•˜๊ธฐ ์œ„ํ•จ์œผ๋กœ static์œผ๋กœ ๊ด€๋ฆฌ ๋˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ DP์˜ ์†์„ฑ ๊ฐ’ ๋ณ€ํ™”๋Š” propertyChangedCallback์—์„œ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ๊ณ ,

propertyChangedCallback ๋ฉ”์„œ๋“œ์˜ ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฉ”ํ„ฐ DependencyObject์—์„œ
์ง์ ‘ ํ•ด๋‹น ๊ฐ์ฒด์— ์บ์ŠคํŒ… ํ•ด์„œ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4 Likes