WPF - Lier à selecteditem de la zone de liste entre les contrôles utilisateur
J'ai deux usercontrols, le premier avec une zone de liste qui est lié à une liste de Clients qui affiche des détails simples de chaque client.
La deuxième de contrôle de l'utilisateur, j'aimerais être une vue plus détaillée de n'importe quel client est sélectionné dans la zone de liste de la première usercontrol.
Est-il possible de mettre en place une liaison dans le deuxième contrôle à lier à l'élément sélectionné dans la première de contrôle de l'utilisateur?
Ma zone de Liste:
<ListBox Name="lstCustomer" ItemsSource="{Binding Customers}" >
<ListBox.Resources>
<DataTemplate DataType="{x:Type MyApplication:Customers}">
<Label Grid.Row="0" Content="{Binding Customer.name}" FontSize="14" FontWeight="Bold" Padding="5" />
<Label Grid.Row="1" Grid.Column="0" Content="{Binding Customer.telephone}" Padding="10,5" />
</Grid>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
Vue détaillée Usercontrol (jusqu'à Présent)
<Grid x:Name="containingGrid" DataContext="{Binding ElementName=lstCustomers, Path=SelectedItem}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Customer.name}" FontSize="23"/>
</Grid>
Merci
Greg
Ce que vous avez devrait fonctionner si vous modifiez votre TextBlock de liaison pour Text="{Binding name}". Je vous suggère de changer de nom"," au "Nom" de votre déclaration de propriété au Client afin de l'identifier comme un bien et de le faire suivre certaines "règles!".
OriginalL'auteur gr-eg | 2011-07-29
Vous devez vous connecter pour publier un commentaire.
Je suggère d'avoir une propriété dans le ViewModel de la Clientèle objet de dire SelectedCustomer et le lier à la SelectedItem de votre zone de liste comme celle-ci,
Puisque vous avez mentionné que les deux contrôles utilisateur sont dans la même vue, donc je suis en supposant qu'ils partagent une même ViewModel. Dans ce cas, vous pouvez simplement définir le contexte de données de cette façon -
OriginalL'auteur Rohit Vats
Oui, vous pouvez - si vous donnez la zone de liste, un nom de CustomerList ensuite, vous pouvez lier à sa propriété SelectedItem à l'aide d'une liaison comme "{Binding ElementName=CustomerList, Path=SelectedItem}".
êtes-vous à l'aide de deux commandes de l'utilisateur dans un autre contrôle de l'utilisateur ou d'une Fenêtre..? si possible, essayez de publier ur du code xaml.. atleast simplifiée
Oui les deux commandes de l'utilisateur sont utilisés dans le même contrôle de l'utilisateur et il n'y aura qu'une seule instance à la fois. J'ai posté le code xaml pour la vue détaillée de contrôle de l'utilisateur dans ma question initiale
Ah, toutes mes excuses, j'ai mal lu la première phrase. Vous pouvez exposer le SelectedItem de la zone de liste par l'intermédiaire d'un bien sur Control1 et puis faire de élément de élément de liaison à partir de Control2. Cela ne semble pas aussi élégant comme il pourrait le faire.
OriginalL'auteur Mark Watts