7
votes

Lier à réellementHeight of item ItemsControl

J'ai deux itemsControl code> S qui apparaissent côte à côte. Le itemsControl code> s lié à la même itemsSource code>, mais ils affichent les données différemment.

Chaque élément affiché à gauche sera probablement plus petit que le même article sur le à droite. Cela provoque un problème car les lignes ne s'aligneront pas, j'ai donc besoin de l'élément à gauche pour se lier à l'élément à droite. P>

ItemsControl        ItemsControl
|Item 1         |Item 1
|Item 2         |Item 2
|Item 3         |
|Item 4         |Item 3


0 commentaires

4 Réponses :


0
votes

Depuis le itemsource est identique sur les deux, vous pouvez utiliser un seul itemsControl et une ligne entière représentée comme deux sections (deux colonnes d'une grille) à l'intérieur de ce seul < Code> DataTemplate , les hauteurs seront alignées automatiquement. Vous pouvez toujours le styler à ressembler à une partie de deux itemstrol différents) mais techniquement un.

Une autre façon d'aller avec ceci est, ajoutant une propriété hauteur dans la vue de la vue ( bien sûr, pas très bonne conception depuis l'ajout de la dépendance de la vue à la VM ). Twoway lie la hauteur à l'actualité de l'élément d'itemStrol de gaucheContainerStyle. Et sur la droiteControl de droite se lie que la propriété de hauteur à la hauteur des articles contenant des objets {d'une manière}. Donc, les deux seront synchronisés.

Une autre idée basée sur votre mise à jour "besoin du défilement sur le côté droit": Utilisez une seule liste de lecture et avez deux colonnes dedans, et de ces deux gridviewcolumn.Celltemplate ont vos deux types de données. Cette idée a toujours besoin de colonne de congélation sur la première colonne. Mais cela peut être plus délicat.

Quoi qu'il en soit, j'irais avec la première approche ici.


2 commentaires

Malheureusement, la grille de deux colonnes ne fonctionnera pas à cause du scénario de défilement que j'ai (voir ma question mise à jour). La hauteur réelle dans le point de vue pourrait fonctionner, mais je ne suis pas sûr que cela devrait être quelque chose qui va dans la vue, car elle est spécifique.


Malheureusement, je n'ai pas été capable d'effectuer une liaison à l'actualité, alors je ne pouvais donc pas terminer l'option un ou deux. Je vais comprendre quelque chose.




0
votes

Jetez un coup d'œil à mon article: http://www.codeproject.com/kb /Wpf/bindinghub.aspx

C'est ainsi que vous pouvez lier à la lecture de propriétés de dépendance en lecture seule à l'aide de BLANDINGHUB: P>

<bindings:BindingHub 
       Visibility="Hidden"
       Socket1="{Binding ActualWidth, ElementName=Item, Mode=OneWay}"
       Socket2="{Binding ItemWidth, Mode=OneWayToSource}"
       Connect="(1 in, 2 out)"/>


0 commentaires

0
votes

Je devais résoudre ce problème exactement. J'ai utilisé la solution de liaison en lecture seule trouvée ici: https://meleak.wordpress.com / 2011/08/28 / prewaytosource-Binding-for-Readonly-dépendance-propriété /

Utilisation de cela, j'ai été capable de lier la lecture en lecture seule de chaque listViewItem dans un listview à une propriété de mon article Voir le modèle appelé ListViewItemHeight . Ensuite, dans le second listview , j'ai lié la hauteur de chaque élément à listViewItemheight . .


0 commentaires