Haben Sie eine Situation, in der Kontrollkästchen in einer Benutzeroberfläche an einen numerischen Parameter gebunden werden müssen - effektiv machen bestimmte Werte das Kontrollkästchen "true", sonst ist es "false".
Der einfachste Weg, dies zu tun, schien die Verwendung eines Konverters zu sein:
[ValueConversion(typeof(int), typeof(bool?))]
public class TypeToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool?))
throw new InvalidOperationException("The target must be a bool");
if( (value < 3)
{
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplmentedExpection();
}
}
Und dann im XAML:
Das funktioniert wie ein Zauber, wenn Convert verwendet wird, scheitert jedoch vollständig, wenn ConvertBack verwendet wird, weil es wissen muss, welcher numerische Wert war (es hängt von anderen Benutzeroberflächenelementen ab), bevor es wissen kann, welche Zahl zurückgegeben werden soll - effektiv benötigt es Zugriff auf das gebundene Objekt.
Ich ging davon aus, dass ich dies mit einem ConverterParameter tun könnte, aber anscheinend können Sie keinen Wert an diese Eigenschaft binden.
Gibt es einen Ausweg aus diesem Chaos?
EDIT: Ich habe das durch Herumspielen mit den ursprünglichen Bindungen gelöst und bin damit davongekommen, weil ich ohnehin alle Elemente löschen wollte, wenn sie nicht ausgewählt sind. Aber ich lasse dies hier stehen, da es ein gültiges Problem zu sein scheint und ich neugierig auf mögliche Lösungen bin.