µ¥ÀÌÅÍ ¹ÙÀεù 4
¹ÙÀεù Source·Î Á¤Àû °´Ã¼¿Í ¿¬°á Binding Source ¼Ó¼ºÀ» ÀÌ¿ëÇØ DataContext ÀÌ¿ÜÀÇ °´Ã¼¿Í ¸â¹ö¸¦ Binding ÇÒ ¶§, »ç¿ëÇÑ´Ù. <Window x:Class="BindingDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:BindingDemo" Title="BindingDemo" Height="171" Width="230" DataContext="{Binding}"> <Canvas> <TextBox Canvas.Left="29" Canvas.Top="30" Height="24" Width="99" Text= "{Binding TextName, Source={x:Static local:TestClass.Object}}"/> <Button Canvas.Left="32" Canvas.Top="80" Content="Button" Height="23" Name="button1" Width="129" Click="Button_Click" /> </Canvas> </Window> xmlns:local="clr-namespace:BindingDemo" ´Ù¸¥ °´Ã¼¸¦ Âü°í Çϱâ À§ÇÑ ³×ÀÓ½ºÆäÀ̽º¸¦ ÁöÁ¤ÇÑ´Ù. Text= "{Binding TextName, Source={x:Static local:TestClass.Object}}" Binding ÇÒ ¼Ó¼ºÀº TextNameÀÌ´Ù. Source·Î °´Ã¼¸¦ ÁöÁ¤ÇÑ´Ù. namespace BindingDemo
{ /// <summary> /// MainWindow.xaml¿¡ ´ëÇÑ »óÈ£ ÀÛ¿ë ³í¸® /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = this; } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show(TestClass.Object.TextName); } } public class TestClass { private static TestClass Instance = new TestClass(); public static TestClass Object { get { return Instance; } } public string TextName { get; set; } private TestClass() { } } } Á¤Àû ¸â¹ö·Î ¼±¾ðµÈ TestClassÀÇ TextName ¼Ó¼ºÀ» ÀÌ¿ëÇÏ°í ÀÖ´Ù. ´Ù¿î·Îµå : BindingDemo_source_static.zip
Binding Converter ÀÌ¿ëConverter¸¦ ÀÌ¿ëÇÏ¿© Binding ¼Ò½ºÀÇ °ªÀ» »õ·Î¿î Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. <Window x:Class="BindingDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:BindingDemo" Title="BindingDemo" Height="171" Width="230" DataContext="{Binding}"> <Window.Resources> <local:HexConverter x:Key="HexConv"/> </Window.Resources> <Canvas> <TextBox Text="{Binding TestValue, UpdateSourceTrigger=PropertyChanged}" Width="70" Height="23" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Top"/> <TextBlock Text="{Binding TestValue, Converter={StaticResource HexConv}}" Grid.Row="1" Width="146" Height="23" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="0" Canvas.Top="44" /> </Canvas> </Window> <local:HexConverter x:Key="HexConv"/> CS Äڵ忡 ÀÖ´Â HexConverter¸¦ ÀÚ¿ø µî·ÏÇÏ°í ÀÖ´Ù. Text="{Binding TestValue, UpdateSourceTrigger=PropertyChanged}" TextBox°ªÀÌ ¹Ù²î¸é Áï½Ã, TestValue °ªµµ ¹Ù²îµµ·Ï ÇÑ´Ù. Text="{Binding TestValue, Converter={StaticResource HexConv}}" TextBlockÀÇ Binding¿¡¼ Converter¸¦ ¼³Á¤ÇÏ°í ÀÖ´Ù. using System.ComponentModel;
namespace BindingDemo { /// <summary> /// MainWindow.xaml¿¡ ´ëÇÑ »óÈ£ ÀÛ¿ë ³í¸® /// </summary> public partial class MainWindow : Window, INotifyPropertyChanged { private int val; public int TestValue { get { return val; } set { val = value; OnPropertyChanged("TestValue"); } } public MainWindow() { InitializeComponent(); this.DataContext = this; } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string name) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(name)); } } } public class HexConverter : IValueConverter { public object Convert(object value, Type type, object parameter, System.Globalization.CultureInfo culture) { int v = (int)value; return string.Format("0x{0:X2}", v); } public object ConvertBack(object value, Type type, object parameter, System.Globalization.CultureInfo culture) { string s = (string)value; int v; if (int.TryParse(s, System.Globalization.NumberStyles.AllowHexSpecifier, null, out v)) { return v; } return 0; } } } 16Áø¼ö·Î º¯È¯ÇÏ´Â HexConverter¸¦ Á¤ÀÇÇÏ°í ÀÖ´Ù. BindingÀÇ Converter¿¡ ÁöÁ¤µÈ Ŭ·¡½º´Â IValueConverter ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇؼ ±¸ÇöÇÑ´Ù. Convert°¡ Binding ¼Ò½º ÄÁÆ®·Ñ¿¡ µ¥ÀÌÅÍ Àü´Þ½Ã¿¡ È£ÃâµÇ´Â ¹Ýȯ ´Ù¿î·Îµå : BindingDemo_convert.zip
Binding ConverterParameter ¼Ó¼º ÀÌ¿ëConverterParamter¸¦ ÀÌ¿ëÇÏ¿© °ªÀ» º¯È¯ Ŭ·¡½º·Î ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. <Canvas>
<TextBox Text="{Binding TestValue, UpdateSourceTrigger=PropertyChanged}" Width="70" Height="23" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Top"/> <TextBlock Text="{Binding TestValue, Converter={StaticResource HexConv}, ConverterParameter = 6}" Grid.Row="1" Width="146" Height="23" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="0" Canvas.Top="44" /> </Canvas> Text="{Binding TestValue, Converter={StaticResource HexConv}, ConverterParameter = 6}" ConverterParameter °ªÀ» 6À¸·Î ÁöÁ¤ÇÑ´Ù. public object Convert(object value, Type type, object parameter, System.Globalization.CultureInfo culture)
{ int v = (int)value; int p = int.Parse((string)parameter); return string.Format("0x{0:X" + p.ToString() + "}", v); } XAMLÀÇ ConverterParameter¿¡ ÁöÁ¤ÇÑ°ªÀº ¼¼ ¹ø° ÀÎÀÚÀÎ parameter·Î Àü´ÞµÈ´Ù. parameter´Â ¹®ÀÚ¿ Çü½ÄÀ̹ǷΠint·Î ÆĽÌÇÑ´Ù. |