XAML устанавливает для свойства изображения значения, используя DependencyProperty - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть такая модель:

{
    "images": [{
        "image_url": "..........",
        "orientation": "horizontal"
    },
    {
        "image_url": "...............",
        "orientation": "vertical"
    }]
}

и шаблон ListView DataTemplate

<DataTemplate x:DataType="model:ImageItem">
    <controls:ImageEx Source="{x:Bind cover_image_url}" PlaceholderSource="" PlaceholderStretch="Uniform"/>
</DataTemplate>

Теперь я хочу изменить свойство PlaceholderSource элемента управления ImageEx вместе с orientation.

Более четко, когда свойство изображения горизонтальное, ImageEx загрузит заполнитель 1. Когда свойство изображения вертикальное, ImageEx загрузит заполнитель 2.

Как это сделатьПожалуйста, покажи мне.

1 Ответ

1 голос
/ 26 апреля 2019

Более четко, когда свойство изображения горизонтальное, ImageEx загрузит заполнитель 1. Когда свойство изображения вертикальное, ImageEx загрузит заполнитель 2.

Вы можете использовать IValueConverter интерфейс для приближения, использовать класс конвертера для преобразования разных типов сообщений в разные PlaceholderSource для ImageEx. Вы можете сослаться на следующий ImageConverter.

public class ImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        object img = null;

        switch (value.ToString())
        {
            case "horizontal":
                img = new BitmapImage(new Uri("ms-appx:///Assets/holder1.png"));
                break;
            case "vertical":
                img = new BitmapImage(new Uri("ms-appx:///Assets/holder2.png"));
                break;
            default:
                break;
        }

        return img;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

Xaml

<Page.Resources>
        <local:ImageConverter  x:Key="Converter"/>
</Page.Resources>

       ......

<DataTemplate x:DataType="model:ImageItem">
    <controls:ImageEx Source="{x:Bind cover_image_url}" PlaceholderSource="{x:Bind orientation,Converter={StaticResource Converter}}" PlaceholderStretch="Uniform"/>
</DataTemplate>
...