首页 > 解决方案 > 布尔到图像转换器不起作用。图像没有改变

问题描述

我已经有一个正在运行的布尔到图像转换器,可以在另一个应用程序上完美运行。我已经复制并修改了代码,但它不起作用。你们有想法吗?

我的 XAML:

    <Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <services:BooleanToObjectConverterService x:Key="boolToStyleImage"
                              x:TypeArguments="Style">
                    <services:BooleanToObjectConverterService.FalseObject>
                        <Style TargetType="Image">
                            <Setter Property="Source" Value="container_noconnect.png" />
                        </Style>
                    </services:BooleanToObjectConverterService.FalseObject>
                    <services:BooleanToObjectConverterService.TrueObject>
                        <Style TargetType="Image">
                            <Setter Property="Source" Value="container_withconnect.png" />
                        </Style>
                    </services:BooleanToObjectConverterService.TrueObject>
                </services:BooleanToObjectConverterService>
            </ResourceDictionary>
        </Grid.Resources>
        <Image Style="{Binding HasWebserviceConnection, Converter={StaticResource boolToStyleImage}}" Aspect="AspectFill"/>
    </Grid>

这些是我的课: BooleanToObjectConverterService:

    public class BooleanToObjectConverterService<T> : IValueConverter
    {
        public T FalseObject { set; get; }

        public T TrueObject { set; get; }

        public object Convert(object value, Type targetType,
                              object parameter, CultureInfo culture)
        {
            return (bool)value ? this.TrueObject : this.FalseObject;
        }

        public object ConvertBack(object value, Type targetType,
                                  object parameter, CultureInfo culture)
        {
            return ((T)value).Equals(this.TrueObject);
        }
    }

ImageResourceExtension:

    [ContentProperty("Source")]
    public class ImageResourceExtension : IMarkupExtension
    {
        public string Source { get; set; }

        public object ProvideValue(IServiceProvider serviceProvider)
        {
            if (Source == null)
                return null;
            var imageSource = ImageSource.FromResource(Source);
            return imageSource;
        }
    }

我已经调试了代码并HasWebserviceConnection正确更改了值。

编辑:感谢@Janne Matikainen,我使用了 DataTriggers,它现在可以工作了。我明天更新解决方案。谢谢

标签: c#mvvmxamarin.forms

解决方案


就那么简单。谢谢@Janne Matikainen。

<Image x:Name="image" Source="container_noconnect.png" Aspect="AspectFill" >
    <Image.Triggers>
        <DataTrigger TargetType="Image" Binding="{Binding Source={x:Reference advanceButton}, IsEnabled}" Value="True">
            <Setter Property="Source" Value="container_withconnect" />
        </DataTrigger>
    </Image.Triggers>
</Image>

推荐阅读