为什么此xamarin绑定转换器使应用程序崩溃?

问题描述 投票:0回答:1

我有一个布尔属性,我想将其否定值(!value)绑定到按钮,但是每次我在xaml标记中配置转换器时,它都会无例外地终止应用程序,我没有在应用程序中心发现任何错误。如果我删除此部分, Converter={StaticResource inverter}},则所有内容均可再次使用,但无法进行转换。

我的xaml:

<ContentPage.Resources>
        <local:BooleanConverter x:Key="inverter" />
...

<ContentPage.Resources>

...

<controls:FrameButton IsEnabled="{Binding IsBusy, Converter={StaticResource inverter}}" Margin="5" CornerRadius="5">

还有我的BooleanConverter.cs:

using System;
using Xamarin.Forms;

public class BooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return !System.Convert.ToBoolean(value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return !System.Convert.ToBoolean(value);
    }
}

我有一个布尔属性,我想将其否定值(!value)绑定到按钮,但是每次我在xaml标记中配置转换器时,它都会无例外地终止应用程序,我没有...]]] >>

使用显式强制转换,因为除非错误使用,否则您始终知道value将是布尔值。通常不使用ConvertBack,因为它通常没有意义。

using System;
using Xamarin.Forms;

public class BooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return !((bool)value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
c# xamarin binding converters
1个回答
0
投票

使用显式强制转换,因为除非错误使用,否则您始终知道value将是布尔值。通常不使用ConvertBack,因为它通常没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.