WPF - DataTemplate без контейнера, элементы в виде строк в сетке? - PullRequest
3 голосов
/ 28 октября 2009

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

Ответы [ 2 ]

12 голосов
/ 29 октября 2009

Хорошо, используйте ItemsControl с примененным свойством Grid.IsSharedSizeScope="true". Далее, для вашего ItemTemplate вы используете <Grid>, как обычно, но теперь, когда вы добавляете ColumnDefinition s, вы устанавливаете атрибут 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, так что вы также можете создавать горизонтальные макеты.

1 голос
/ 28 октября 2009

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

...