Je définis une propriété IsEnabled d'un contrôle basé sur si un SelectedIndex> = 0 dans un ListBox. Je peux faire ceci dans le code derrière, mais je voulais créer un convertisseur de valeur pour ce comportement puisque c'est quelque chose que je fais fréquemment.Qu'est-ce qui provoque le déclenchement d'un convertisseur de valeur?
J'ai créé cette valeur Converter pour gérer la tâche et lié à la propriété IsEnabled:
[ValueConversion(typeof(Selector), typeof(bool))]
public class SelectorItemSelectedToBooleanConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || !(value is Selector))
return null;
var control = value as Selector;
return control.SelectedIndex >= 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Le convertisseur est appelée une seule fois, lorsque l'application est chargée. Il ne se déclenche pas lorsque SelectedIndex change.
Ma question est donc de savoir ce qui déclenche un convertisseur de valeur? Je suppose que c'est quand les données liées changent, il y a donc un moyen de forcer le convertisseur à feu dans des circonstances différentes? Suis-je même poser la bonne question?
pouvez-vous montrer votre liaison en xaml? SelectedIndex est la propriété de dépendance et devrait fonctionner –
La liaison n'est pas à la propriété SelectedIndex, mais plutôt à la ListBox elle-même. Je suppose que vous avez déjà répondu à la question: le contrôle en lui-même n'est pas un dp et donc onyl fonctionnera probablement à chaque fois que son contenu change. –