Панель - это контейнер, который используется для размещения его дочерних элементов. Например: Сетка с заголовком и одной кнопкой внизу и изображением в центре - Сетка очень гибкая, чтобы помочь вам перемещать объекты и упорядочивать их при изменении размера окна и т. Д.
ItemsControl - это элемент управления, который поможет вам с коллекцией предметов. Давайте рассмотрим конкретный пример: список. Вы можете очень легко показать список элементов, применить шаблон ко всем из них и так далее.
Класс управления - это элемент пользовательского интерфейса, который может иметь собственный шаблон.
Обратите внимание, что гораздо лучше определить собственный UserControl, отредактировать шаблон или стиль вашего PictureWall, используя подклассы (есть много преимуществ, например, вы можете использовать Blend для переопределения стиля).
Edit:
@ note2
На вашем месте я бы создал свой собственный пользовательский элемент управления, чтобы повторно использовать существующие элементы управления для создания того, что я хочу. Если этого будет недостаточно, я бы создал подкласс Control.
[StyleTypedProperty(Property = "FooStyle", StyleTargetType = typeof(Control))]
public partial class MyDangControl: Control
{
...
@ note3
Это плохая идея объединять все в одно. Вы должны разделить логику извлечения данных из Picture Wall. Например, пользователь нажимает миниатюру, чтобы загрузить изображение, и весь пользовательский интерфейс зависает. Ужасный UX.
Чтобы быть кристально чистым, позвольте мне процитировать Pro WPF в C # 2010
Контроль
Это самый распространенный старт
точка при построении контроля
с нуля. Это базовый класс для
все пользовательские интерактивные виджеты.
Класс управления добавляет свойства для
установка фона и переднего плана,
а также шрифт и выравнивание
содержание. Класс управления также размещает
сам в порядке вкладок (через
IsTabStop) и представляет
понятие двойного щелчка (через
MouseDoubleClick и
События PreviewMouseDoubleClick). Но
самое главное, класс управления
определяет свойство шаблона, которое
позволяет менять его внешний вид
с настроенным деревом элементов для
бесконечная гибкость.
ContentControl
Это базовый класс для элементов управления
который может отображать один кусок
произвольный контент. Этот контент может быть
элемент или пользовательский объект, который
используется в сочетании с шаблоном.
(Контент устанавливается через
Свойство содержимого и необязательный
шаблон может быть предоставлен в
Свойство ContentTemplate.) Многие
контролирует обертку определенного, ограниченного типа
содержания (как строка текста в
текстовое окно). Потому что эти элементы управления
не поддерживают все элементы, они
не должен быть определен как содержание
контроля.
ItemsControl
ItemsControl - базовый класс для
элементы управления, которые обертывают список элементов, но
не поддерживает выбор, в то время как
Селектор является более специализированной базой
класс для элементов управления, которые поддерживают
выбор. Эти классы не часто
используется для создания пользовательских элементов управления,
потому что особенности шаблонов данных
ListBox, ListView и TreeView
обеспечить большую гибкость.
панель
Это базовый класс для элементов управления
с макетом логики. Элемент управления макетом
может содержать несколько детей и
упорядочивает их в соответствии с конкретными
семантика макета. Часто панели
включить прикрепленные свойства, которые могут
быть настроенным на детей, чтобы настроить
как устроены дети.