ConveterParameter 作为整数
ConveterParameter as integer
我有一些单选按钮,每个按钮代表一个数字(整数)值。它们绑定到视图模型中的数字 属性,并且它们使用转换器将整数值转换为布尔值。问题是,转换器参数似乎被解析为字符串,所以我的转换器 returns 错误,即使我必须使用相同的数字。
我最好的选择是指定 ConverterParameter
是一个整数,但我该怎么做呢?
单选按钮XAML:
<RadioButton Content="1" IsChecked="{Binding SelectedValue, Converter={StaticResource MyConverter}, ConverterParameter=1}" />
在视图模型中绑定 属性:
// The SetProperty method handles INotifyProperyChanged
private int _selectedValue;
public int SelectedValue
{
get { return _selectedValue; }
set { SetProperty(ref _selectedValue, value); }
}
我的转换器:
public class MyConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool)value) ? parameter : Binding.DoNothing;
}
}
您应该首先将您的参数和值转换为合适的格式,例如double/integer!像这样
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Convert.ToInt32(value) == System.Convert.ToInt32(parameter);
}
我有一些单选按钮,每个按钮代表一个数字(整数)值。它们绑定到视图模型中的数字 属性,并且它们使用转换器将整数值转换为布尔值。问题是,转换器参数似乎被解析为字符串,所以我的转换器 returns 错误,即使我必须使用相同的数字。
我最好的选择是指定 ConverterParameter
是一个整数,但我该怎么做呢?
单选按钮XAML:
<RadioButton Content="1" IsChecked="{Binding SelectedValue, Converter={StaticResource MyConverter}, ConverterParameter=1}" />
在视图模型中绑定 属性:
// The SetProperty method handles INotifyProperyChanged
private int _selectedValue;
public int SelectedValue
{
get { return _selectedValue; }
set { SetProperty(ref _selectedValue, value); }
}
我的转换器:
public class MyConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool)value) ? parameter : Binding.DoNothing;
}
}
您应该首先将您的参数和值转换为合适的格式,例如double/integer!像这样
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Convert.ToInt32(value) == System.Convert.ToInt32(parameter);
}