Come legare la proprietà isenabled a un o di due valori?
Domanda
Attualmente quando devo creare un o due valori sulla proprietà isenebabled di un controllo che termina utilizzando un controllo del contenitore invisibile (utilizzo un bordo) e impostando l'isenabled del controllo e quello del contenitore.
.C'è un approccio migliore?In caso contrario, qual è il controllo più leggero per farlo?
Grazie in anticipo.
Soluzione
Se IsEnabled
è impostato tramite Binding, è possibile utilizzare Multibinding in congiunzione con un Convertitore multi-value.
Altri suggerimenti
È possibile utilizzare un convertitore come questo:
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.");
}
}
.
Ed è come lo useresti:
<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>
. potrebbe utilizzare un MultiBinding
con aconvertitore che o i valori sono passati.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow