Конвертер Bool в изображение не работает.Изображение не меняется - PullRequest
1 голос
/ 20 сентября 2019

У меня уже есть работающий конвертер bool в изображение, который отлично работает в другом приложении.Я скопировал и адаптировал код, но он не будет работать.Ребята, у вас есть идея?

мой 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, и теперь он работает.Завтра обновляю решение.Спасибо

1 Ответ

0 голосов
/ 23 сентября 2019

Все просто.Спасибо @Джанне Матикайнен.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...