Pergunta

No código a seguir, digo-o ComboBox para usar o DataTemplate chamado CustomerTemplate atribuindo sua ItemTemplate atributo.

StackPanel , no entanto, não tem um atributo ItemTemplate.

Como posso obter o StackPanel para usar também CustomerTemplate?

<Window.Resources>
    <DataTemplate x:Key="CustomerTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding FirstName}"/>
            <TextBlock Text=" "/>
            <TextBlock Text="{Binding LastName}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<DockPanel LastChildFill="False" Margin="10">
    <ComboBox 
        x:Name="CustomerList"
        ItemTemplate="{StaticResource CustomerTemplate}"
        HorizontalAlignment="Left"
        DockPanel.Dock="Top" 
        Width="200"
        SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"
        ItemsSource="{Binding Customers}"/>

    <StackPanel DataContext="{Binding SelectedCustomer}" Orientation="Horizontal">
        <TextBlock Text="Chosen: "/>
        <TextBlock Text="{Binding LastName}"/>
    </StackPanel>

</DockPanel>
Foi útil?

Solução

ItemsControl é essencialmente um StackPanel com um ItemTemplate. Ele usa um StackPanel internamente.

No entanto, parece que você está tentando exibir um único cliente, em vez de uma lista deles (eu som como Clippy, não é?). Nesse caso, você quiser usar um ContentControl:

<ContentControl 
    Content="{Binding SelectedCustomer}"
    ContentTemplate="{StaticResource CustomerTemplate}" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top