В XAML это обозначение:
<Container>
<ContentItem />
</Container>
Сокращается для этого:
<Container>
<Container.Children>
<ContentItem />
</Container.Children>
</Container>
Ошибка говорит о том, что сетка будет принимать элементы UIElement для дочерних элементов, но не элементы ColumnDefinition. Это из-за <Container.Children>
, подразумеваемого в используемой сокращенной записи.
Как указывалось в других ответах, элементы ColumnDefinition должны быть потомками <Grid.ColumnDefinitions>
, чтобы XAML был действительным. Тем не менее, полезно знать, что если бы разметка была такой:
<Grid>
<ColumnDefinition />
<Grid.Children>
...
</Grid.Children>
</Grid>
Тогда у вас также будет Свойство 'Children' установлено более одного раза ошибка сборки, потому что это синтаксис XAML, который подразумевает <Container.Children>
в сокращенной записи. Вот почему элементы <ColumnDefinition>
должны быть явно включены в коллекцию <Grid.ColumnDefinitions>
, в противном случае компилятор попытается получить <ColumnDefinition>
под подразумеваемым тегом <Grid.Children>
, который ожидает элементы, полученные из UIElement, и, следовательно, ошибку.