반응형
바인딩 처리를 하다보면 값에 따라 화면에 바인딩 되어야하는 값이 달라야 할때가 있다.
예를들어 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}"/>
끝
반응형
'프로그래밍 > WPF' 카테고리의 다른 글
[WPF] UserControl DependencyProperty 설정과 Binding 방법 (0) | 2021.07.21 |
---|---|
[WPF] ItemControl에서 Item Index binding (0) | 2021.05.11 |
[WPF] MVVM에서 IDialogService 사용 (0) | 2021.05.10 |
[WPF] Separator Vertial 처리 (0) | 2021.05.06 |
[WPF] IGrouping 데이터 바인딩 하기 (0) | 2021.05.06 |