Erro ao ligar usando extensões de marcação: propriedade desconhecida encontrada ao analisar uma extensão de marcação
Em princípio, desenvolvi uma maneira legal de ligar RadioButtons a quase qualquer coisa:
/// <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();
}
}
Por exemplo, você pode usar isso para vincular RadioButtons a uma propriedade de string da seguinte maneira (é um bug bem conhecido que você deve usar um GroupName exclusivo para cada RadioButton):
<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'}}"/>
Agora eu gostaria de usarpublic static readonly
objetos chamadosFilter1
eFilter2
como os valores dos meus RadioButtons. Então eu tentei:
<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}'}}"/>
Mas isso me dá um erro:
Propriedade desconhecida 'To' para o tipo 'MS.Internal.Markup.MarkupExtensionParser + UnknownMarkupExtension' encontrado ao analisar uma extensão de marcação.
O erro ainda ocorre se eu remover as aspas. O que estou fazendo de errado?