2019년 1월 26일 토요일

WPF DataBinding, 데이터바인딩, IValueConverter를 이용한 데이터바인딩

WPF DataBinding, 데이터바인딩, IValueConverter를 이용한 데이터바인딩
데이터바인딩시 소스와 타겟의 데이터 타입이 다른 경우가 있다. 예를 들면 체크박스의 체크여부에 따라 “예”, “아니오” 등을 표시하는 경우 또는 파일 크기가 바이트이지만 파일의 크기에 따라 바이트, 킬로바이트, 메가 바이트 또는 기가 바이트로 표시하려고 하는 경우가 그렇다.
데이터바인딩시 타입의 변경을 위해 IValueConverter가 존재하며 IValueConverter 인터페이스를 구현하는 클래스가 소스와 대상 사이의 값을 변환한다.
WPF 값 변환기는 IValueConverter 인터페이스 또는 IMultiValueConverter 인터페이스 를 구현해야 하며 두 인터페이스 모두 Convert() 및 ConvertBack()의 ​​두 가지 메서드 만 구현하면 된다.
문자열을 입력으로 불리언(Boolean) 값을 반환하는 간단한 변환기를 구현해 보자.
[실행화면]
n
[YesNoToBoolConverter.cs]
using System;
using System.Windows.Data;
namespace ConverterTest
{
class YesNoToBoolConverter : IValueConverter
{
public object Convert(object value, Type tergetType, object param, System.Globalization.CultureInfo culture)
{
switch(value.ToString())
{
case "Yes": return true;
case "No": return false;
}
return false;
}
public object ConvertBack(object value, Type tergetType, object param, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
if ((bool)value == true) return "Yes";
else return "No";
}
return "No";
}
}
}
[MainWindow.xaml]
<Window x:Class="ConverterTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ConverterTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<local:YesNoToBoolConverter x:Key="converter"/>
</Window.Resources>
<StackPanel>
<TextBox Name="txtValue"/>
<WrapPanel>
<TextBlock Text="Current Value : "/>
<TextBlock Text="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource converter}}"/>
</WrapPanel>
<CheckBox Content="Yes" IsChecked="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource converter}}" />
</StackPanel>
</Window>

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...