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.

È stato utile?

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