【问题标题】:ConveterParameter as integer转换器参数为整数
【发布时间】:2019-08-01 19:58:39
【问题描述】:

我有一些单选按钮,每个按钮代表一个数字(整数)值。它们绑定到视图模型中的数字属性,并使用转换器将整数值转换为布尔值。问题是,Converter 参数似乎被解析为字符串,所以我的转换器返回 false,即使我必须使用相同的数字。

我最好的办法是指定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;
    }
}

【问题讨论】:

    标签: c# wpf xaml ivalueconverter


    【解决方案1】:

    您应该首先将参数和值转换为合适的格式,例如双精度/整数!像这样的

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return System.Convert.ToInt32(value) == System.Convert.ToInt32(parameter);
        }
    

    【讨论】:

    • 当我希望它是整数时,为什么要double
    • 您也可以使用整数,这并不重要,但双精度可以处理更多数字(更新答案)
    • 好的。还有一件事。代码中== 的两边不是相同吗?还是我什么都没看到?
    • ups 解决了这个问题:)
    • 谢谢,它现在正在工作。我非常专注于弄清楚如何在XAML 中进行转换,以至于我忘记了它可以在转换器中完成:-)。我会在几分钟后接受你的回答(StackOverflow 计时器)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多