WPF - DataTemplate без контейнера, элементы в виде строк в сетке?

StackOverflow https://stackoverflow.com/questions/1639948

Вопрос

Существует ли механизм, эквивалентный ItemsControl.ItemTemplate, который работает с Grid? У меня есть коллекция элементов, и я хотел бы представить их в виде строк в Grid.Column, чтобы я мог назначить <=> отдельным элементам внутри шаблона (в отличие от строк в элементе управления списком). Возможно ли это в WPF с использованием стандартных элементов управления?

Это было полезно?

Решение

Хорошо, используйте ItemsControl с примененным прикрепленным свойством Grid.IsSharedSizeScope="true". Далее, для вашего ItemTemplate вы используете <Grid>, как обычно, но теперь, когда вы добавляете ColumnDefinition, вы устанавливаете для атрибута SharedSizeGroup имя, уникальное для каждого столбца. Так, например:

<ItemsControl Grid.IsSharedSizeScope="true">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition SharedSizeGroup="MyFirstColumn" />
                    <ColumnDefinition SharedSizeGroup="MySecondColumn" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding MyFirstProperty}"/ >
                <TextBlock Grid.Column="1" Text="{Binding MySecondProperty}"/ >
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Дополнительные сведения о IsSharedSizeScope и SharedSizeGroup см. в этот раздел SDK . Следует отметить, что у RowDefinitions также есть SharedSizeGroup, чтобы вы могли также делать горизонтальные макеты.

Другие советы

Может быть, я неправильно понял вашу проблему, но разве это не то, что GridView делает?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top