Hier ist ein weiterer Ansatz, bei dem Sie Ihre eigenen Markup-Erweiterungen definieren, die True
oder False
(oder einen anderen gewünschten Wert) zurückgeben. Dann verwenden Sie sie einfach direkt in XAML wie jede andere Markup-Erweiterung:
public class TrueExtension : MarkupExtension {
public override object ProvideValue(IServiceProvider serviceProvider) => true;
}
public class FalseExtension : MarkupExtension {
public override object ProvideValue(IServiceProvider serviceProvider) => false;
}
public class DoubleExtension : MarkupExtension {
public DoubleExtension(){};
public DoubleExtension(double value) => Value = value;
public double Value { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider) => Value;
}
Sie verwenden sie dann folgendermaßen (vorausgesetzt, Ihr importierter Namespace ist mx
):
<KeyBinding Key="Enter"
Command="{Binding ReturnResultCommand}"
CommandParameter="{mx:True}" />
<Button Visibility="{Binding SomeProperty,
Converter={SomeBoolConverter},
ConverterParameter={mx:True}}">
<Button Visibility="{Binding SomeProperty,
Converter={SomeDoubleConverter},
ConverterParameter={mx:Double 42.5}}">
Ich definiere tatsächlich viele benutzerdefinierte MarkupExtension
Klassen für viele allgemeine Dinge, die ich nicht unbedingt in meinen Ressourcen speichern möchte.