Frage

Im folgenden Code, sage ich dem ComboBox verwenden, die Datatemplate CustomerTemplate genannt durch die Zuordnung seines ItemTemplate Attributs.

Stackpanel , jedoch nicht ein ItemTemplate Attribut hat.

Wie kann ich die Stackpanel erhalten auch CustomerTemplate verwenden?

<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>
War es hilfreich?

Lösung

Items ist im Wesentlichen ein Stackpanel mit ein ItemTemplate. Es verwendet eine Stackpanel intern.

Allerdings sieht es aus wie Sie versuchen, einen einzigen Kunden angezeigt werden, anstatt eine Liste von ihnen (ich klinge wie Clippy, nicht wahr?). In diesem Fall mögen Sie einen Content verwenden:

<ContentControl 
    Content="{Binding SelectedCustomer}"
    ContentTemplate="{StaticResource CustomerTemplate}" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top