Различные представления для каждого объекта в observableCollection - PullRequest
1 голос
/ 29 марта 2012

Я хотел бы использовать WrapPanel. У меня есть ObservableCollection с ViewModels, которые все имеют свое собственное представление. Есть ли способ использовать DataTemplates и использовать несколько представлений?

Вот что я сейчас делаю:

<DataTemplate x:Key="ProjectInfoDetailTemplate"> <!-- DataType="{x:Type viewModels:ProjectInfoViewModel} -->
        <views:ProjectInfoView MouseLeftButtonDown="ProjectInfoView_MouseLeftButtonDown"/>
    </DataTemplate>

<ItemsControl Grid.Row="1" Grid.Column="0"
                  ItemsSource="{Binding AllProjects}"
                  ItemTemplate="{StaticResource ProjectInfoDetailTemplate}" Margin="0,15,0,0">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel>
                    <WrapPanel.Resources>
                        <Style TargetType="{x:Type views:ProjectInfoView}">
                            <Setter Property="Margin" Value="10" />
                        </Style>
                    </WrapPanel.Resources>
                </WrapPanel>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

Но каждому элементу в observableCollection AllProjects требуется собственный вид.

Как ты можешь это сделать?

Спасибо !!

1 Ответ

3 голосов
/ 29 марта 2012

Вы можете использовать ItemTemplateSelector для предоставления правильных шаблонов для каждого элемента.Или вы можете создавать DataTemplates без x: Key, но с установленным TargetType и не указывать ItemTemplate в ItemsControl.Таким образом, wpf сам найдет правильный DataTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...