J'ai un convertisseur simple qui vérifie si un objet est égal à n'importe quel paramètre je le passe. Mon problème est que le paramètre convertisseur est toujours passé en chaîne et que la valeur est toujours passée en objet. Pour les comparer correctement, je dois convertir le paramètre en le même type que la valeur. Existe-t-il un moyen de faire passer le type d'un objet au type d'un autre sans connaître préalablement les deux types?Est-il possible de lancer un objet dans le type d'un 2ème objet sans connaître l'un ou l'autre type?
public class IsObjectEqualParameterConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null && parameter == null)
return true;
if (value == null)
return false;
// Incorrectly returns False when the ConverterParameter is an integer
// Would like to try and cast parameter into whatever type value before checking equality
// Something like: return value.Equals((parameter as value.GetType()));
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Et un exemple d'utilisation serait quelque chose comme:
<Button IsEnabled="{Binding Path=Index, ConverterParameter=0, Converter={StaticResource IsObjectEqualParameterConverter}}" />
Si à la fois 'value' et' parameter' sont des entiers, ça devrait aller. Pourriez-vous donner un exemple d'échec? –
ConverterParameters est passé en tant que chaînes, donc quand j'entre 0, il le lit comme "0" et retourne false. – Rachel
Droit - il serait utile de le préciser dans la question. –