WPF - GridView.GridViewColumn deux lignes par ligne?
Bonjour est-il possible d'avoir une liste -> ListView.Affichage -> GridView -> GridViewColumn avec "deux lignes" par ligne.
par exemple.
COLONNE 1-COLONNE 2
La LIGNE 1 blah | données
bla
La RANGÉE 2, etc | plus
J'ai essayé sans succès d'utiliser une Cellule de modèle, mais le point à l'intérieur du modèle n'est pas redimensionnée lors de son contenant colonne est redimensionné manuellement.
Code:
<ListView Height="238" DockPanel.Dock="Top" ItemsSource="{Binding Blah}"
SelectedItem="{Binding Path=Selectedblah, UpdateSourceTrigger=PropertyChanged}">
<ListView.View>
<GridView>
<GridViewColumn Header="No." DisplayMemberBinding="{Binding Path=Id}" Width="25" />
<GridViewColumn Header="Job Type" DisplayMemberBinding="{Binding Path=Something}" Width="165" />
<GridViewColumn Header="Assigned To" DisplayMemberBinding="{Binding Path=SomethingElse}" Width="90" />
<GridViewColumn Header="Created" DisplayMemberBinding="{Binding Path=DateCreated, Converter={StaticResource dateTimeFormat}, ConverterParameter='dd/MM/yy HH:mm'}" Width="65" />
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="/Streetcar.UI.Modules.FleetTracker;component/Resources/Images/tick.png" Visibility="{Binding IsCompleted, Converter={StaticResource boolToVis}}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Des idées?
EDIT: C'est en utilisant MVVM donc il n'y a pas de code derrière tout d'un délimitée ViewModel
OriginalL'auteur brianstewey | 2009-09-30
Vous devez vous connecter pour publier un commentaire.
D'accord, je vais essayer de nouveau. Avez-vous essayé un
CellTemplate
avec unTextBlock
avecTextWrapping
ensemble deWrap
?Par Exemple:
OriginalL'auteur dustyburwell
Tout d'abord, le CellTemplate est le chemin à parcourir pour avoir du contenu personnalisé à l'intérieur d'une cellule. Vous pourriez, par exemple, ont une verticale StackPanel à l'intérieur de la CellTemplate.
Ensuite, Pour avoir le contenu de votre cellule redimensionnées automatiquement lorsque vous modifiez la largeur d'une colonne, vous devez spécifier HorizontalContentAlignment="Stretch" sur le ListViewItem:
OriginalL'auteur decasteljau
Ours avec moi, comme je ne suis pas sûr à 100%, c'est ce que vous me demandez. Mais, en supposant que vous êtes désireux d'avoir chaque ligne ont plus de texte en dessous (à la outlook partiel fonctionnalité), je pense que je peux aider.
Vous aurez besoin de modifier le style par défaut pour les
ListViewItem
et modifier leControlTemplate
pour ajouter unTextBlock
sous leGridViewRowPresenter
. Lorsque vous avez terminé, ça va ressembler à quelque chose comme ceci:Vous pourriez avoir à obtenir de fantaisie avec la liaison de la
Width
de votreTextBlock
pour qu'il s'enroule à l'intérieur de laListView
, mais ce devrait vous obtenir a commencé.Oh...désolé, j'ai mal interprété. Je vais réfléchir et voir si je peux pas trouver une solution.
Vieille question maintenant, mais c'est ce que je cherchais. Ne sais pas l'étiquette de poser une nouvelle question, simplement pour cette réponse, c'est bien que séparés - un bel exemple de rep la thésaurisation.
OriginalL'auteur dustyburwell
C'est ce que j'ai fait.
OriginalL'auteur Pieter Du Toit
Ici est ce que je ressens est une solution simple à un problème que beaucoup ont quand il s'agit de 2 lignes par enregistrement tout en étant capable d'utiliser la pagination et de tri etc. qui vient avec le contrôle gridview. Je vais vous donner le code et essayer de l'expliquer du mieux que je peux.
Le truc, c'est la coutume TemplateField ItemTemplate.
La première chose à savoir est que ce qui rend dans la source html lorsque vous créez un TemplateField, est une nouvelle ouverture et de fermeture de balise TD. après la dernière colonne est créée, elle ferme ensuite la ligne avec une balise de fermeture.
Afin de créer le templatefield d'ouvrir et de fermer ainsi que de l'ouvrir et de fermer ItemTemplate balises. À l'intérieur de la première chose que vous voulez faire est de fermer les balise td "" et puis l'ouvrir balise tr "". Puis créer une nouvelle ligne et une nouvelle colonne de la balise. maintenant, si la colonne doit être large pour une sorte de description ou de la colonne notes. utilisation columnspan = 10 ou cependant beaucoup vous avez besoin. Parce que le Templatefield va fermer la balise TD votre dernière balise td ne devrait pas avoir une balise de fermeture et de votre dernière ligne ne doit pas se terminer par une balise TR car qui sera fermé où la balise de fermeture est.
J'espère que cela aide et était suffisamment clair pour que les gens comprennent. Vous pouvez utiliser cette méthode pour créer autant de lignes que vous le souhaitez par enregistrement. Aussi n'importe quel nombre d'autres formatage chose si vous êtes tout bon avec le html et les tables. La clé est de se rappeler que lorsque vous commencez vous êtes à la mise en forme à l'intérieur d'un ouvert td et tr tag et à la fin, il va écrire dans une clôture td et tr tag laissez donc votre dernière colonne et de ligne ouverte.
OriginalL'auteur Deathstalker