Подтвердить что ты не робот

XAML эквивалентен DIV в HTML?

То, что я хочу быть более конкретным, - это элемент, который я могу использовать для группировки множества других элементов, не выполняя их макет. Единственное, что он должен сделать, помимо предоставления более удобного XAML, группируя связанные элементы в свой собственный родительский тег, должен распространять окружающие свойства, такие как DataContext. Это должен быть чисто логический элемент без визуального. Есть ли что-то в WPF/XAML, предназначенном для использования таким образом?

4b9b3361

Ответ 1

В WPF/XAML нет прямого эквивалента HTML <div>, но похоже, что наиболее близким является WPF Panel Класс

Предоставляет базовый класс для всех панелей элементы. Используйте элементы панели положение и упорядочить дочерние объекты в Windows Presentation Foundation (WPF) приложения.

Однако класс Panel является абстрактным классом, который не может быть непосредственно создан и может использоваться только с использованием одного из не абстрактных дифференцирований в рамках WPF. К ним относятся:

Canvas, DockPanel, Grid, TabPanel, ToolBarOverflowPanel, UniformGrid, StackPanel, VirtualizingPanel, WrapPanel

Из того, чего вы пытаетесь достичь, ближайший из них к вашим потребностям, вероятно, будет либо Canvas, либо Grid.

Если ни один из этих классов не подходит, вы всегда можете реализовать свой собственный класс, полученный из класса Panel.

Помните, однако, что все эти классы (включая базовый класс Panel) по своей природе являются специфичными для UI (т.е. они предназначены для визуальных элементов, а не для чисто логических), хотя они могут быть сконфигурированы так, чтобы иметь для них небольшой или вообще отсутствующий видимый визуальный элемент. Это полностью по дизайну в WPF, поскольку статья Википедии о XAML правильно заявляет:

В WPF XAML используется в качестве языка разметки пользовательского интерфейса для определения пользовательского интерфейса элементов, привязки данных, событий и другие функции.

Ответ 2

XAML, в отличие от HTML, не претендует на роль "семантического" - это технология презентации, и она знает, что это технология презентации, нет элементов XAML, которые существуют только для того, чтобы сделать разметку более приятной, не меняя отображения.

Вы не можете реализовать элемент WPF, как хотите, потому что любое изменение структуры XAML изменит макет, например, Grid (как и все панели) организует прямые дети - момент, когда вы группируете некоторые из эти дети внутри другого элемента Grid будут компоновать этот элемент как единое целое, а не каждый из них отдельно.

Это имеет смысл, если вы думаете о XAML как способе заполнения объектов .net, у Grid есть свойство Children, это свойство является списком, и оно будет отображать элементы этого списка.