프로그래밍/WPF
[WPF] Value Converter
흔한티벳여우
2021. 5. 10. 17:59
반응형
바인딩 처리를 하다보면 값에 따라 화면에 바인딩 되어야하는 값이 달라야 할때가 있다.
예를들어 bool 값을 이용하여 visible처리 할 때나, 퍼센트 값에 따라 폰트 컬러가 달라진다거나 하는 기타 등등의 요소가 존재한다.
이를 위한 Value Converter 사용법은 아래와 같다.
ViewModel에 컨버터 클래스를 선언한다.
public abstract class BaseOnewayConverter : MarkupExtension, IValueConverter
{
public BaseOnewayConverter() { }
// source to binding target
public abstract object Convert(object value, Type targetType,
object parameter, CultureInfo culture);
// binding target to source
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
public class BoolToVisibilityConverter : BaseOnewayConverte/
{
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? Visibility.Visible : Visibility.Collapsed;
}
}
사용하는 화면에 리소스로 등록해준다.
<Window.Resources>
<vm:BoolToVisibilityConverter x:Key="Converter"/>
</Window.Resources>
원하는 컨트롤에 바인딩한다.
<Button Focusable="False"
x:Name="ButtonOpenMenu"
Height="60" Width="60"
VerticalAlignment="Bottom"
Visibility="{Binding ElementName=ButtonCloseMenu, Path=IsPressed, Converter={converter:BoolToVisibilityConverter}}"
Background="{x:Null}" BorderBrush="{x:Null}"/>
끝
반응형