La liaison de désactiver la Visibilité d'un élément et de l'inversion de
Je voudrais faire Un Contrôle visible si un Contrôle est caché, et vice-versa. Droit maintenant, j'ai ce convertisseur:
public class InvertVisibilityConverter : IValueConverter {
public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture) {
if (targetType == typeof(Visibility)) {
Visibility vis = (Visibility)value;
return vis == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
}
throw new InvalidOperationException("Converter can only convert to value of type Visibility.");
}
public Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture) {
throw new Exception("Invalid call - one way only");
}
}
Et ce XAML:
<Button Visibility="{Binding ElementName=btn1, Path=Visibility, Converter={StaticResource InvertVisibilityConverter}}">Btn2</Button>
Qui fonctionne. Je me demandais simplement si il y a une façon plus directe dans WPF /Silverlight pour accomplir cette? Je ne me dérange pas d'avoir un convertisseur, je veux juste m'assurer que il n'y a pas de meilleure façon, je ne suis pas au courant.
Vous devez vous connecter pour publier un commentaire.
Bout de ligne, je ne vois pas de problème avec ce que vous faites.
Cela dit, si vous avez une propriété dans le ViewModel à laquelle le Contrôle A se lie à contrôler sa visibilité, je voudrais lier un Contrôle à la même propriété et inverser la visibily par l'intermédiaire d'un convertisseur séparé. Je ne suis pas sûr si je peux exprimer clairement les raisons, mais qui me semble plus naturel pour moi (au moins en lieu et place de toute autre contexte autour de ce que vous faites).
Dans ce cas, vous pourriez le faire avec des déclencheurs. Exemple avec deux Boutons
Ce que vous faites est bien, mais j'ai tendance à préférer plus général, de convertisseurs et de garder la symétrie avec le bâti dans les convertisseurs.
Donc je ferais un InverseBooleanToVisibiltyConverter qui accepte les booléens et les retours visibilité types. Cela correspond avec le construit en BoolenToVisibiltyConverter
Alors je voudrais lier à la IsVisible propriété du bouton pas la propriété de Visibilité.
Mais c'est une question de préférence vraiment.