Fehler beim Binden mit Markup-Erweiterungen: Beim Parsen einer Markup-Erweiterung ist eine unbekannte Eigenschaft aufgetreten
Im Prinzip habe ich eine nette Methode entwickelt, um RadioButtons an fast alles zu binden:
/// <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();
}
}
Sie können dies beispielsweise verwenden, um RadioButtons wie folgt an eine Zeichenfolgeneigenschaft zu binden (es ist ein bekannter Fehler, dass Sie einen eindeutigen Gruppennamen für jeden 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'}}"/>
Nun möchte ich nutzenpublic static readonly
Objekte aufgerufenFilter1
undFilter2
als die Werte meiner RadioButtons. 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 einen Fehler:
Unbekannte Eigenschaft 'To' für Typ 'MS.Internal.Markup.MarkupExtensionParser + UnknownMarkupExtension', die beim Analysieren einer Markup-Erweiterung festgestellt wurde.
Der Fehler tritt weiterhin auf, wenn ich die Anführungszeichen entferne. Was mache ich falsch?