Привязать список растровых изображений в список [duplicate]

неопределенная ссылка на WinMain@16 или аналогичную «необычную» main() ссылку на точку входа (особенно для ).

Вы возможно, пропустили, чтобы выбрать правильный тип проекта с вашей реальной IDE. IDE может захотеть связать, например. Проекты приложений Windows для такой функции точки входа (как указано в недостающей ссылке выше) вместо обычной int main(int argc, char** argv);.

Если ваша среда IDE поддерживает Plain Console Projects , вы может захотеть выбрать этот тип проекта вместо проекта приложения Windows.


Здесь case1 и case2 обрабатываются более подробно из реальный мир проблема.

1
задан Bohrend 21 August 2013 в 11:57
поделиться

2 ответа

, поэтому я в основном создал загруженное событие в списке и добавил этот код

  private void list_of_images_Loaded_1(object sender, RoutedEventArgs e)
    {
        ListBox lst = (ListBox)sender;
        lst.ItemsSource = new_Classifieds_list[0].ImageUrls;
    }

, который связывает itemssource списка с списком imageurls. так как я не могу получить доступ к списку из кода, потому что он находится внутри палитры itemstemplate

0
ответ дан Bohrend 27 August 2018 в 10:09
поделиться

В зависимости от того, хотите ли вы просто отображать список изображений или если вы также хотите их выбрать, вы можете либо выбрать элемент 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;
2
ответ дан Clemens 27 August 2018 в 10:09
поделиться
Другие вопросы по тегам:

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