我有两个 RadioButtons,我将它们绑定到 ViewModel 中的布尔属性。不幸的是,我在转换器中遇到错误,因为“targetType”参数为空。
现在我没想到通过的 targetType 参数为空(我期待的是 True 或 False)。但是我注意到 RadioButton 的 IsChecked 属性是一个可以为空的布尔值,所以这种解释。
我可以更正 XAML 中的某些内容,还是应该更改解决方案的现有转换器?
这是我的 XAML:
<RadioButton Name="UseTemplateRadioButton" Content="Use Template"
GroupName="Template"
IsChecked="{Binding UseTemplate, Mode=TwoWay}" />
<RadioButton Name="CreatNewRadioButton" Content="Create New"
GroupName="Template"
IsChecked="{Binding Path=UseTemplate, Mode=TwoWay, Converter={StaticResource InverseBooleanConverter}}"/>
这是我正在使用解决方案范围内的 InverseBooleanConverter 的现有转换器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((targetType != typeof(bool)) && (targetType != typeof(object)))
{
throw new InvalidOperationException("The target must be a boolean");
}
return !(((value != null) && ((IConvertible)value).ToBoolean(provider)));
}