I saw many posts on how to bind a boolean value to a radio button. But my scenario is that I need to bind it to a radio button and read the selection from the user.
That is no option should be selected intially.
If I bind it to a boolean, since boolean cant be null it shows the default value selected in radio button.
If I use nullable boolean, I still defaults to false when trying to use the converter.
I cant use oneway mode in xaml as I need to check if the radio button selection was made which I do using the bounded variable.
Ant pointers on how to achieve this?
You can bind a nullable boolean to your radio buttons, but you need to do it through a converter.
First declare your variable:
private bool? answer;
public bool? Answer
{
get { return answer; }
set
{
answer = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Answer"));
}
}
and initialise it to null
.
Then in the XAML:
<Window.Resources>
<local:BooleanConverter x:Key="BooleanConverter"/>
</Window.Resources>
<StackPanel Grid.Row="1">
<RadioButton Content="I Agree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='true', Mode=TwoWay}" />
<RadioButton Content="I Disagree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='false', Mode=TwoWay}" />
</StackPanel>
And finally your converter:
class BooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var test = (bool?)value;
var result = bool.Parse((string)parameter);
if (test == result)
{
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var result = bool.Parse((string)parameter);
return result;
}
}
This binds the radio button to Answer
and states that the first one will only be checked when the value is true
and the second one will be checked when the answer is false
. You can then check that Answer
is not null before letting the user proceed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With