Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 659 fois - Téléchargée 16 fois
public abstract class TypedConverter<VType,TType> : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { //Vérification du type d'entrée if (!(value is VType)) throw new InvalidOperationException("La paramètre d'entrée doit être de type "+ typeof(VType)); //Vérification du type de sortie if(!this.IsTargetType(targetType,typeof(TType))) throw new InvalidOperationException("La type de sortie doit être de type " + typeof(TType)); return this.Convert((VType)value, culture); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { //Vérification du type d'entrée if (!(value is TType)) throw new InvalidOperationException("La paramètre d'entrée doit être de type " + typeof(VType)); //Vérification du type de sortie if (!this.IsTargetType(targetType, typeof(VType))) throw new InvalidOperationException("La type de sortie doit être de type " + typeof(TType)); return this.ConvertBack((TType)value, culture); } #endregion protected abstract TType Convert(VType p, CultureInfo culture); protected abstract VType ConvertBack(TType p, CultureInfo culture); //Méthode recherchant un type correspondant dans la hierarchie des classes private bool IsTargetType(Type targetType, Type type) { while(targetType != null) { if (targetType == type) return true; targetType = targetType.BaseType; } return false; } } public class BoolToVisibilityConverter : TypedConverter<bool,Visibility> { public bool Invert { get; set; } protected override Visibility Convert(bool value, CultureInfo culture) { if (this.Invert) return (bool)value ? Visibility.Collapsed : Visibility.Visible; return (bool)value ? Visibility.Visible : Visibility.Collapsed; } protected override bool ConvertBack(Visibility value, CultureInfo culture) { if (this.Invert) return value == Visibility.Collapsed ? true : false; return value == Visibility.Visible ? true : false; } }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.