µ¥ÀÌÅÍ ¹ÙÀεù 3
Áö±Ý±îÁö´Â UI°¡ ¹Ù²ð¶§ Binding ¼Ò½º°¡ ¾÷µ¥ÀÌÆ® µÇ´Â °ÍÀ» È®ÀÎ ÇÏ¿´´Ù. INotifyPropertyChanged¸¦ ÀÌ¿ëÇÑ ¹ÙÀεù ¼Ò½º ¾÷µ¥ÀÌÆ®TextBoxÀÇ Æ÷Ä¿½º°¡ ¹Ù²î¸é Label °ªµµ °°ÀÌ ¹Ù²ï´Ù. <Canvas>
<TextBox Canvas.Left="34" Canvas.Top="53" Height="22" Name="textBox1" Width="125" Text="{Binding Message}"/> <Button Canvas.Left="34" Canvas.Top="93" Content="Button" Height="27" Name="button1" Width="120" /> <Label Canvas.Left="36" Canvas.Top="12" Height="28" Name="label1" Width="83" Content="{Binding Message}" /> </Canvas> Text="{Binding Message} TextBoxÀÇ Text¿¡ Message¸¦ ¹ÙÀεù ÇÑ´Ù. Content="{Binding Message} LabelÀÇ Content¿¡ Message¸¦ ¹ÙÀεù ÇÑ´Ù. using System.ComponentModel;
namespace BindingDemo { /// <summary> /// MainWindow.xaml¿¡ ´ëÇÑ »óÈ£ ÀÛ¿ë ³í¸® /// </summary> public partial class MainWindow : Window, INotifyPropertyChanged { private string message; public string Message { get { return message; } set { message = value; OnPropertyChanged("Message"); } } public MainWindow() { InitializeComponent(); this.DataContext = this; } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string name) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(name)); } } } } using System.ComponentModel; INotifyPropertyChanged¸¦ »ç¿ëÇϱâ À§Çؼ ComponentModelÀ» using ÇÑ´Ù. public partial class MainWindow : Window, INotifyPropertyChanged INotifyPropertyChanged¸¦ »ó¼ÓÇÑ´Ù. OnPropertyChanged("Message"); Message°¡ ¾÷µ¥ÀÌÆ® µÇ¸é ´Ù¸¥ ¹ÙÀεù µÈ ¸ðµç ÄÁÆ®·ÑÀ» ¾÷µ¥ÀÌÆ® Çϱâ À§ÇØ OnProperty( )¸¦ È£ÃâÇÑ´Ù. public event PropertyChangedEventHandler PropertyChanged; INotifyPropertyChanged ÀÎÅÍÆäÀ̸¦ »ó¼ÓÇϸé À̺¥Æ® PropertyChanged´Â ¹Ýµå½Ã Á¤ÀÇ µÇ¾î¾ß ÇÑ´Ù.
TextBoxÀÇ ÀÔ·ÂµÈ ¹®ÀÚ¿ÀÌ ¹Ù²î¸é ¹ÝÀεù µÈ Message ¼Ó¼ºÀÌ ºÒ¸°´Ù. ´Ù¿î·Îµå : BindingDemo_PropertyChanged.zip
UpdateSourceTrigger·Î Áï½Ã ¾÷µ¥ÀÌÆ®Áö±Ý ±îÁö´Â Æ÷Ä¿½º°¡ ¹Ù²î¸é ¶óº§ÀÇ °ªÀÌ ¾÷µ¥ÀÌÆ® µÇ¾úÁö¸¸ Áï½Ã ¾÷µ¥ÀÌÆ® µÇµµ·Ï Çغ¸ÀÚ. <Canvas>
<TextBox Canvas.Left="34" Canvas.Top="53" Height="22" Name="textBox1" Width="125" Text="{Binding Message, UpdateSourceTrigger=PropertyChanged}"/> <Label Canvas.Left="36" Canvas.Top="12" Height="28" Name="label1" Width="83" Content="{Binding Message}" /> </Canvas> UpdateSourceTrigger·Î ¾÷µ¥ÀÌÆ® ½Ã±â¸¦ Á¶Á¤ ÇÒ ¼ö ÀÖ´Ù. Text="{Binding Message, UpdateSourceTrigger=PropertyChanged} XAMLÀÇ UpdateSourceTrigger¸¦ PropertyChanged·Î ÇÏ¿© Áï½Ã ¾÷µ¥ÀÌÆ® µÇµµ·Ï ÇÏ¿´´Ù. UpdateSourceTrigger¿¡´Â ´ÙÀ½°ú °°Àº ¼³Á¤ÀÌ ÀÖ´Ù.
´Ù¿î·Îµå : BindingDemo_UpdateSourceTrigger.zip
´Ù¸¥ ÄÁÆ®·ÑÀÇ ¼Ó¼º ¹ÙÀεù ÇϱâXAML¿¡¼ ´Ù¸¥ ÄÁÆ®·ÑÀÇ ¼Ó¼º¸¦ Á÷Á¢ ¹ÙÀεù Çؼ ¾÷µ¥ÀÌÆ® ÇÒ ¼öµµ ÀÖ´Ù. ½½¶óÀ̵å¹Ù¸¦ ¿òÁ÷À̸é ÅؽºÆ® ºí·ÏÀÌ °°ÀÌ ¾÷µ¥ÀÌÆ® µÇµµ·Ï Çغ»´Ù. ¸ð´Â ÄÁÆ®·ÑÀ» »èÁ¦ÇÏ°í TextBlock ÇÑ °³, Slider ÇÑ °³¸¦ ¹èÄ¡ÇÑ´Ù. INotifyPropertyChanged °ü·ÃµÈ ¼Ò½º´Â ÁÖ¼®Ã³¸®ÇÑ´Ù. <Canvas>
<Slider Canvas.Left="15" Canvas.Top="24" Height="25" Name="mySlider" Width="189" /> <TextBlock Canvas.Left="23" Canvas.Top="64" Height="23" Width="70" Text= "{Binding Value, ElementName = mySlider}" /> </Canvas> Text= "{Binding Value, ElementName = mySlider}" ´Ù¸¥ ÄÁÆ®·ÑÀÇ ¼Ó¼ºÀ» ¹ÙÀεù ÇÏ´Â °æ¿ì ElementName¿¡ ´ë»ó ÄÁÆ®·ÑÀÇ À̸§À» ¼³Á¤ÇÑ´Ù. ¾î¶² ¼Ò½º ¼öÁ¤µµ ¾øÀÌ XAML ¸¸À¸·Î °¡´ÉÇÏ´Ù. |