wpfbindingivalueconverter

how to pass an integer as ConverterParameter?


I am trying to bind to an integer property:

<RadioButton Content="None"
             IsChecked="{Binding MyProperty,
                         Converter={StaticResource IntToBoolConverter},
                         ConverterParameter=0}" />

and my converter is:

[ValueConversion(typeof(int), typeof(bool))]
public class IntToBoolConverter : IValueConverter
{
    public object Convert(object value, Type t, object parameter, CultureInfo culture)
    {
        return value.Equals(parameter);
    }

    public object ConvertBack(object value, Type t, object parameter, CultureInfo culture)
    {
        return value.Equals(false) ? DependencyProperty.UnsetValue : parameter;
    }
}

the problem is that when my converter is called the parameter is string. i need it to be an integer. of course i can parse the string, but do i have to?

thanks for any help konstantin


Solution

  • Here ya go!

    <RadioButton Content="None"
                 xmlns:sys="clr-namespace:System;assembly=mscorlib">
        <RadioButton.IsChecked>
            <Binding Path="MyProperty"
                     Converter="{StaticResource IntToBoolConverter}">
                <Binding.ConverterParameter>
                    <sys:Int32>0</sys:Int32>
                </Binding.ConverterParameter>
            </Binding>
        </RadioButton.IsChecked>
    </RadioButton>
    

    The trick is to include the namespace for the basic system types and then to write at least the ConverterParameter binding in element form.