J'ai besoin de créer deux contrôles qui contiennent le même nombre d'éléments (une quantité dynamique), le premier contrôle représente les clés, le second représente les valeurs. J'en ai besoin pour que lorsque l'utilisateur redimensionne la largeur de la colonne supérieure, il doit affecter la même colonne dans la rangée inférieure (des valeurs).Connexion largeur/hauteur de la cellule dans deux contrôles différents?
Voici un exemple de ce que je veux:
<Window
DataContext="{Binding RelativeSource={RelativeSource Self}}"
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<ItemsPanelTemplate x:Key="ItemsPanelTemplate">
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Window.Resources>
<StackPanel>
<ItemsControl ItemsSource="{Binding Keys}"
ItemsPanel="{StaticResource ItemsPanelTemplate}"/>
<ItemsControl Grid.Row="1" ItemsSource="{Binding Values}"
ItemsPanel="{StaticResource ItemsPanelTemplate}"/>
</StackPanel>
</Window>
Imports System.Collections.Specialized
Class MainWindow
Private Sub Window_Loaded(ByVal sender As Object,
ByVal e As RoutedEventArgs) Handles MyBase.Loaded
DataContext =
New StringDictionary From
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"},
{"key4", "value4"}
}
End Sub
End Class
Résultat:
Encore une fois, je veux être en mesure de créer un semblable DataGrid contrôle qui prend même en charge les bordures de cellules et les largeurs de cellules et les hauteurs doivent être connectés à l'autre contrôle ls 'width + permet de redimensionner.
Je préfère que ce soit fait xamly. Note: c'est un contrôle personnalisé, donc je peux déclarer les propriétés appropriées si nécessaire. mais rappelez-vous que les hauteurs et la largeur des cellules doivent être dynamiques et individuelles à des colonnes/rangées spécifiques.
En référence à this question, je l'ai créé d'une manière légèrement différente (ayant un troisième contrôle pour les cellules), mais la question est toujours la même, je veux que la largeur hauteur des colonnes et des cellules soit dynamique, et donner à l'utilisateur la possibilité de les redimensionner les uns les autres.
MISE À JOUR
decyclone's answer est quelque chose que j'aimerais mettre en œuvre, mais j'ai essayé l'exemple qu'il a fourni définissant la propriété de ItemsControl
s Grid.IsSharedSizeScope
à vrai, mais il ne fonctionne pas, voici le résultat (recadrée):
Est-il possible d'appliquer un champ de taille partagée entre deux contrôles différents?
Avez-vous besoin d'utiliser deux 'ItemsControls' séparés? Si vous souhaitez conserver la même largeur et la même hauteur des cellules, pourquoi ne pas utiliser un seul élément, ItemsControl, contenant deux données de ligne ItemTemplate? – decyclone
@decyclone, oui. J'ai considéré que, je dois utiliser séparé ItemControl, puisque mon scénario particulier est légèrement différent de l'exemple ci-dessus. J'ai dynamiquement généré des colonnes et des lignes (voir [link] (http: // stackoverflow.com/questions/4251183/wpf-two-dimensional-datagrid-listview "GDF bidimensionnel DataGrid/ListView?"), et je veux garder les cellules ItemsSource séparées, mais toujours connecté tant qu'il s'agit de la taille des cellules. – Shimmy
Avez-vous envisagé d'utiliser 'Shared Size' en utilisant' SharedSizeGroup' et 'Grid.IsSharedSizeScope'? – decyclone