¿Cómo atar la propiedad isEnabled a un o de dos valores?
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.
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