Grundsätzlich habe ich eine nette Art und Weise entwickelt, Radiobuttons, um fast alles zu binden:Fehler beim Markup Erweiterung Bindung mit: Unbekannte Eigenschaft festgestellt, während eine Markup-Erweiterung Parsen
/// <summary>Converts an value to 'true' if it matches the 'To' property.</summary>
/// <example>
/// <RadioButton IsChecked="{Binding VersionString, Converter={local:TrueWhenEqual To='1.0'}}"/>
/// </example>
public class TrueWhenEqual : MarkupExtension, IValueConverter
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object To { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return object.Equals(value, To);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value) return To;
throw new NotSupportedException();
}
}
Zum Beispiel können Sie diese verwenden, Radiobuttons zu binden wie folgt zu einem String-Eigenschaft (es ein bekannter Fehler ist, dass Sie einen eindeutigen Gruppenname für jede RadioButton- verwenden müssen):
<RadioButton GroupName="G1" Content="Cat"
IsChecked="{Binding Animal, Converter={local:TrueWhenEqual To='CAT'}}"/>
<RadioButton GroupName="G2" Content="Dog"
IsChecked="{Binding Animal, Converter={local:TrueWhenEqual To='DOG'}}"/>
<RadioButton GroupName="G3" Content="Horse"
IsChecked="{Binding Animal, Converter={local:TrueWhenEqual To='HORSE'}}"/>
Jetzt würde ich public static readonly
Objekte Filter1
und Filter2
als Werte genannt verwenden möchten von mein Rad ioButtons. Also habe ich versucht:
<RadioButton GroupName="F1" Content="Filter Number One"
IsChecked="{Binding Filter, Converter={local:TrueWhenEqual To='{x:Static local:ViewModelClass.Filter1}'}}"/>
<RadioButton GroupName="F2" Content="Filter Number Two"
IsChecked="{Binding Filter, Converter={local:TrueWhenEqual To='{x:Static local:ViewModelClass.Filter2}'}}"/>
Aber das gibt mir eine Fehlermeldung:
Unknown property 'To' for type 'MS.Internal.Markup.MarkupExtensionParser+UnknownMarkupExtension' encountered while parsing a Markup Extension.
Der Fehler tritt immer noch, wenn ich die Anführungszeichen zu entfernen. Was mache ich falsch?
Der zweite Link, um die richtige Antwort hat (womit ich meine, die einfache Antwort). Ich muss einfach einen Konstruktor definieren 'public TrueWhenEqual (object to) {To = to; } 'und dann den Konverter mit' Converter = {local: TrueWhenEqual {x: Static lokal: ViewModelClass.Filter1}}}} ' – Qwertie