WPF zone de liste déroulante: autre modèle dans la zone de texte et la chute de déclasser
C'est mon combo-box.
<ComboBox Height="45" HorizontalAlignment="Left" Margin="184,66,0,0" Name="ComboBox1" VerticalAlignment="Top" Width="216">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding FullName}" Width="150" />
<Label Content="{Binding Title}" Width="100"/>
<Label Content="{Binding BranchName}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Comment puis-je le modifier de sorte que seulement le Nom complet s'affiche dans la zone de texte partie de la zone de liste déroulante, tandis que les trois colonnes apparaissent toujours dans la partie déroulante?
OriginalL'auteur Jonathan Allen | 2010-09-08
Vous devez vous connecter pour publier un commentaire.
Malheureusement, la
SelectionBoxItemTemplate
est une propriété en lecture seule, de sorte que nous avons à faire un peu plus de travail. En faisant leItemTemplate
à comment vous souhaitez que l'élément à apparaître lorsque sélectionné, vous pouvez modifier laItemContainerStyle
de fournir unControlTemplate
qui inclut les autres champs que vous souhaitez afficher.Pour la
ComboBoxItem
modèle, j'ai juste modifié la valeur par défaut, il devrait être entièrement fonctionnel.Sa fait quelques années, mais cette réponse a été utile pour moi. +1
OriginalL'auteur Abe Heidebrecht
Si la zone de liste déroulante du IsEditable propriété est définie sur True, vous pouvez définir le "TextSearch.TextPath" propriété de la zone de liste déroulante le nom de la propriété que vous souhaitez afficher. Donc dans votre cas:
Que voulez-vous dire qu'il "casse" TextSearch?
OriginalL'auteur ASanch
Au lieu d'utiliser la lecture seule SelectionBoxItemTemplate bien j'ai créé un nouveau (ci-jointe, les droits d'écriture) de la propriété et utilisé que dans mon style. J'ai également ajouté un déclencheur pour mon style de ne pas casser toutes les zones de liste modifiables qui ne sont pas à l'aide de ma nouvelle propriété attachée...
L'utiliser comme ceci:
Vous suffit d'ajouter cette classe à votre projet:
et de changer votre zone de liste déroulante style de la SelectionBoxAltTemplate propriété attachée si (ou parce que je ne pouvais pas définir un déclencheur pour "not null", je l'ai mis à la valeur par défaut SelectionBoxItemTemplate si le joint est nulle):
La ContentPresenter à l'intérieur de la ControlTemplate de la zone de liste déroulante Style:
Et le Déclencheur pour fournir une compatibilité ascendante pour ComboBoxed sans la Propriété attachée:
Plein De Style:
Mais cela pourrait ne pas fonctionner avec ItemTemplateSelctors, seulement avec un seul modèle, mais vous pouvez facilement ajouter une propriété attachée "SelectionBoxAltTemplateSelector" qui fournit le sélecteur et de passes de l'un à l'style.
OriginalL'auteur JCH2k
Il y a une assez bonne réponse à votre question ici, si vous ne voulez pas modifier les zones de liste modifiables style: https://stackoverflow.com/a/2277488/1070906
Il utilise un Déclencheur dans le DataTemplate qui regarde si il y a un ComboBoxItem quelque part au-dessus dans l'arborescence visuelle, ce qui n'est pas le cas dans la zone de sélection.
OriginalL'auteur JCH2k
Vous pourriez remplacer la zone de liste déroulante et modifier le SelectionBoxItemTemplate directement.
Une fois que vous définissez le contrôle, vous pouvez style.
OriginalL'auteur Prince Owen