Pregunta

Actualmente, cuando tengo que hacer un o de dos valores en la propiedad isEnabled de un control que termino usando un control de contenedor invisible (uso un borde) y configurando el iSEN habilitado del control y el del contenedor.

¿Hay un mejor enfoque?Si no, ¿cuál es el control más ligero para hacer esto?

gracias de antemano.

¿Fue útil?

Solución

Si IsEnabled se establece a través de unión, puede usarla Multibinding en conjunción con una convertidor de valor múltiple.

Otros consejos

Puede usar un convertidor como este:

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.");
    }
}

y así es como lo usaría:

<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>

podría usar una MultiBinding con unConvertidor que o los valores pasados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top