티스토리 뷰

http://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/



When to use a value converter

Value converter (IValueConverter)는 매유 종종 데이터 바인딩에 사용되어집니다. 
ex) Byte를 KB, MB, GB 등으로 표한하는 경우, bool 값 대신 yes 혹은 no 로 표시

Implementing a simple value converter


WPF value converter는 IValueConverter 인터페이스 혹은 IMultiValueConverter 인터페이스를 구현해야합니다.

두 인터페이스는 단지 Convert()ConvertBack() 두 가지의 메소드를 구현하는 것을 요구합니다 .


1
2
3
4
5
6
7
8
9
10
11
12
<Window.Resources>
        <local:YesNoToBooleanConverter x:Key="YesNoToBooleanConverter" />
    </Window.Resources>
 
    <StackPanel Margin="10">
        <TextBox Name="txtValue" />
        <WrapPanel Margin="0,10">
            <TextBlock Text="Current value is: " />
            <TextBlock Text="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource YesNoToBooleanConverter}}"></TextBlock>
        </WrapPanel>
        <CheckBox IsChecked="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource YesNoToBooleanConverter}}" Content="Yes"/>
    </StackPanel>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
namespace WPF_tutorial
{
    
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
    public class YesNoToBooleanConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            switch (value.ToString().ToLower())
            {
                case "yes":
                    return true;
                case "no":
                    return false;
            }
 
            return false;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is bool)
            {
                if ((bool)value == true)
                {
                    return "yes";
                }
 
                else return "no";
            }
 
            return "no";
        }
    }
}
 
cs
2


Code-Behind

Convert() 메서드는 문자열을 입력 받은 다음 yes를 true로, no를 false로 return합니다.

ConvertBack() 메서드는 Convert()의 반대로, true를 "yes"로, false를 "no"로 return 합니다.


XAML

TextBox의 값을 TextBlock 및 CheckBox 컨트롤에 바인딩하고, Converter 속성(YesNoToBooleanConverter)를 사용합니다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함