/* * Copyright (c) 2022 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using AuroraUIComponent.UserControls.KeyValueBase; using System; using System.Globalization; using System.Windows; using System.Windows.Data; namespace AuroraUIComponent.UserControls { /// /// Interaction logic for UCKeyValueCheckBox.xaml /// public partial class UCKeyValueCheckBox : UCKeyValueBase { public static readonly DependencyProperty ValueBoolProperty = DependencyProperty.Register( nameof(ValueBool), typeof(bool), typeof(UCKeyValueCheckBox), new FrameworkPropertyMetadata( false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault )); public bool ValueBool { get { return (bool)GetValue(ValueBoolProperty); } set { SetValue(ValueBoolProperty, value); } } public static readonly DependencyProperty TrueValueStrProperty = DependencyProperty.Register( nameof(TrueValueStr), typeof(string), typeof(UCKeyValueCheckBox), new FrameworkPropertyMetadata( "", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault )); public string TrueValueStr { get { return (string)GetValue(TrueValueStrProperty); } set { SetValue(TrueValueStrProperty, value); } } public static readonly DependencyProperty FalseValueStrProperty = DependencyProperty.Register( nameof(FalseValueStr), typeof(string), typeof(UCKeyValueCheckBox), new FrameworkPropertyMetadata( "", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault )); public string FalseValueStr { get { return (string)GetValue(FalseValueStrProperty); } set { SetValue(FalseValueStrProperty, value); } } public UCKeyValueCheckBox() { InitializeComponent(); } protected override void KeyTextChanged(string newValue) { if (string.IsNullOrEmpty(newValue)) { // KeyText 가 없으므로, 해당 grid 의 width 를 0 으로 만든다 GridParent.ColumnDefinitions[0].Width = new GridLength(0); } } } public class CheckBoxContentConverter : IValueConverter, IMultiValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is bool boolValue && parameter is UCKeyValueCheckBox checkbox) { return boolValue ? checkbox.TrueValueStr : checkbox.FalseValueStr; } return ""; } public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values != null && values.Length >= 3) { if (values[0] is bool boolValue) { return boolValue ? values[1] : values[2]; } } return ""; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } public class InverseBoolConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool b) return !b; return true; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool b) return !b; return true; } } } }