2009-06-18 16 views
7

Nel seguente codice, dico al ComboBox per utilizzare il DataTemplate denominato CustomerTemplate assegnando l'attributo ItemTemplate.Come posso ottenere StackPanel per utilizzare un ItemTemplate?

StackPanel, tuttavia, non ha un attributo ItemTemplate.

Come posso ottenere che StackPanel utilizzi anche 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> 

risposta

36

ItemsControl è essenzialmente uno StackPanel con un ItemTemplate. Utilizza internamente uno StackPanel.

Tuttavia, sembra che tu stia cercando di visualizzare un singolo cliente piuttosto che un elenco di essi (mi sembra Clippy, no?). In questo caso si desidera utilizzare un ContentControl:

<ContentControl 
    Content="{Binding SelectedCustomer}" 
    ContentTemplate="{StaticResource CustomerTemplate}" /> 
+1

perfetta, un altro controllo utile strisciato dalla lavorazione del legno, grazie –

+9

Upvote per il commento Clippy :) – Flater

Problemi correlati