Как показать список объектов, который содержит изображения и привязать его к исходному MVVM - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу показать список изображений и разместить информацию о них под каждым изображением.Я попытался передать ObservableCollection моей модели и связать ее, но это не работает.Сейчас я передаю ObservableCollection из BitmapImages , и он отображает изображения, но тогда я не могу получить информацию.Есть идеи?Я работаю в WPF с MVVM.

Что я пробовал до сих пор:

Просмотр:

<Grid>
    <ListView ItemsSource="{Binding ImageModels}" 
              ScrollViewer.VerticalScrollBarVisibility="Visible"
              ScrollViewer.CanContentScroll="False" MaxHeight="550">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <Image Source="{Binding ImageModels.Data}" />
                    <TextBlock Text="{Binding ImageModels.Title}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

ViewModel:

public ObservableCollection<ImageModel> ImageModels { get; set; }

ImageModel

private string description;
private string title;
private string path;
private BitmapImage data;

public short Id { get; set; }
public short UserId { get; set; }
public DateTime Created { get; set; }
public string Description
{
    get { return description; }
    set
    {
        if (description != value)
        {
            description = value;
            OnPropertyChanged("Description");
        }
    }
}

Я не показал вам всего ImageModel, но вы поняли суть.Наиболее важным свойством является Data, потому что я использую его для заполнения источника или, по крайней мере, пытаюсь.И когда ViewModel загружен, я получаю изображения из БД и заполняю свойство Data каждого изображения BitmapImage, поэтому я использую его для источника.

1 Ответ

0 голосов
/ 10 февраля 2019

При условии, что ваш ImageModel класс будет похож на

public class ImageModel 
{
    public string Path { get; set; }
    public string Title { get; set; }
}

Ваше ViewModel свойство будет

public ObservableCollection<ImageModel> Images = new ObservableCollection<ImageModel>();

Ваше XAML должен иметь Связывание как

<ListView ItemsSource="{Binding Images}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Image Source="{Binding Path}"/>
                <TextBlock Text="{Binding Title}"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...