Сетка изображений WPF [дубликат]

Этот вопрос появляется для всех поисков языка. Следовательно, для Котлина решение является чем-то вроде ниже:

val photoRef = FirebaseStorage.getInstance()
                .reference.child("images/stars.jpg")

// Code ommited - Do some saving - putFile

    photoRef.downloadUrl.addOnSuccessListener({ uri ->
                         product.imageUrl = uri.toString()
                     })

Однако это нехорошее решение. Вам лучше сохранить путь, а затем перестроить полный URL по требованию. Например:

photoRef.downloadUrl.addOnSuccessListener({ uri ->  
            val imagePath = uri.toString()
            // Save to database
        })

Теперь вы можете использовать его позже и только по запросу:

FirebaseStorage.getInstance().reference.child(product.imageUrl).downloadUrl
                    .addOnSuccessListener { uri ->
                        String imageUrl = uri.toString()
                        // Load in images
                    }
0
задан Neo 1 January 2016 в 16:32
поделиться

1 ответ

Вы должны использовать ItemsControl, как показано ниже. Он использует вертикальную StackPanel как панель по умолчанию для своих элементов.

<ItemsControl x:Name="imageItems">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Margin="5"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Установите ItemsSource элемента ItemsControl следующим образом:

imageItems.ItemsSource = Directory.EnumerateFiles(FOLDERPATH, "*.png");

Преобразование из строки пути в ImageSource выполняется путем преобразования встроенного типа в WPF.


Вы можете использовать другую ItemsPanel следующим образом:

<ItemsControl ...>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    ...
</ItemsControl>
2
ответ дан Clemens 27 August 2018 в 08:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: