Come posso ottenere StackPanel per utilizzare un ItemTemplate?
-
06-07-2019 - |
Domanda
Nel seguente codice, dico al ComboBox di utilizzare il DataTemplate chiamato CustomerTemplate assegnando l'attributo ItemTemplate .
StackPanel , tuttavia, non ha un attributo ItemTemplate.
Come posso fare in modo 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>
Soluzione
ItemsControl è essenzialmente uno StackPanel con un ItemTemplate. Utilizza uno StackPanel internamente.
Tuttavia, sembra che tu stia provando a visualizzare un singolo cliente piuttosto che un elenco di essi (mi sembra Clippy, vero?). In tal caso, si desidera utilizzare un ContentControl:
<ContentControl
Content="{Binding SelectedCustomer}"
ContentTemplate="{StaticResource CustomerTemplate}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow