Популяция мангуста: CastError: сбой приведения к ObjectId для значения «[объектный объект]» по пути «_id»

В зависимости от того, хотите ли вы просто отображать список изображений или если вы также хотите их выбрать, вы можете либо выбрать элемент ItemsControl или ListBox. В обоих случаях вы должны определить DataTemplate, который контролирует отображение каждого элемента.

<ItemsControl ItemsSource="{Binding Images}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

или

<ListBox ItemsSource="{Binding Images}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Затем вы должны подумать о том, как вы определяете свой класс предметов. На всякий случай, если вы хотите динамически добавлять или удалять изображения из списка и позволять автоматическому обновлению пользовательского интерфейса, вы должны использовать ObservableCollection в качестве типа контейнера. Поскольку существует преобразование встроенного типа от string до ImageSource (тип свойства Source управления изображением], вы можете просто использовать ObservableCollection<string>.

public class Gal
{
    public ObservableCollection<string> Images { get; set; }
}

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

var gallery = new Gal();
gallery.Images = new ObservableCollection<string>(
    Directory.EnumerateFiles(@"C:\Users\Public\Pictures\Sample Pictures", "*.jpg"));

Теперь вы можете напрямую привязываться к этому экземпляру, просто установив DataContext вашего окна (или везде, где должен отображаться список изображений) этому экземпляру:

DataContext = gallery;

Обратите внимание, что объявление привязки в ItemsControl или ListBox выше было {Binding Images}. Если вам действительно нужно иметь свойство Gallery (которое, как я полагаю, указано в MainWindow) и связать как {Binding Gallery.Images}, вы можете установить DataContext следующим образом:

DataContext = this;
0
задан Yann Eves 26 February 2015 в 18:07
поделиться