문제

현재 보이지 않는 컨테이너 컨트롤을 사용하여 컨트롤의 IsEnabled 속성에서 2 개의 값을 만들어야합니다 (테두리를 사용하여) 및 컨트롤의 isenable 및 컨테이너 중 하나를 설정합니다.

더 나은 접근이 있습니까?그렇지 않은 경우,이 작업을 수행하기위한 가장 가벼운 컨트롤은 무엇입니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

Binding을 통해 IsEnabled가 설정된 경우, 다중 값 변환기와 함께 멀티 바인딩 .

다른 팁

다음과 같이 변환기를 사용할 수 있습니다 :

public class BooleanOrConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        foreach (object value in values)
        {
            if ((value is bool) && (bool)value == true)
            {
                return true;
            }
        }
        return false;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException("BooleanOrConverter is a OneWay converter.");
    }
}
.

그리고 이것이 당신이 어떻게 사용하는지입니다 :

<myConverters:BooleanOrConverter x:Key="BooleanOrConverter" />
...
<ComboBox Name="MyComboBox">
  <ComboBox.IsEnabled>
    <MultiBinding Converter="{StaticResource BooleanOrConverter}">
      <Binding ElementName="SomeCheckBox" Path="IsChecked" />
      <Binding ElementName="AnotherCheckbox" Path="IsChecked"  />
    </MultiBinding>
  </ComboBox.IsEnabled>
</ComboBox>
.

MultiBinding 변환기가 전달 된 값입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top