J'utilise WPF
, MVVM
et DevExpress
GridControl
. Il y a deux panneaux dans mon MainWindow.xaml. Panle1 a une grille et Panel2 a Textbox
. Je veux que si je choisis un élément de la grille dans Panel1 son nom devrait s'afficher dans cette zone de texte Panle2. J'ai écrit le code mais ça ne marche pas. Pouvez-vous s'il vous plaît m'aider à résoudre ce problème?Comment lier des éléments sélectionnés dans MVVM
* Dans NameModel De Modèles Dossier j'ai écrit: *
private NameModelClass _selectedCustomer;
public NameModelClass SelectedCustomer
{
get { return _selectedCustomer; }
set
{
if (_selectedCustomer != value)
{
_selectedCustomer = value;
LastName = value.LastName;
OnPropertyChanged("SelectedCustomer");
}
}
public List<Namess> ListPerson { get; set; }
void CreateList()
{
ListPerson = new List<Namess>();
for (int i = 0; i < 10; i++)
{
ListPerson.Add(new Namess(i));
}
}
public class Namess
{
public Namess(int i)
{
FirstName = "FirstName" + i;
LastName = "LastName" + i;
Age = i * 10;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
}
En MianWindow.xaml j'ai écrit:
<dxdo:LayoutPanel Caption="Grid" Caption="Panel1" x:Name="abc1">
<Grid>
<dxg:GridControl x:Name="grid" Height="233" ItemsSource="{Binding ListPerson}" AutoGenerateColumns="AddNew" HorizontalAlignment="Left" VerticalAlignment="Top" SelectedItem="{Binding SelectedNames}">
<dxg:GridControl.View>
<dxg:TableView ShowTotalSummary="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
</dxdo:LayoutPanel>
<dxdo:LayoutPanel Caption="Panel2" x:Name="abc1">
<TextBox Width="166" Background="White" Height="33" HorizontalAlignment="Right" VerticalAlignment="Bottom" Text="{Binding Path=LastName}"/>
</dxdo:LayoutPanel>
Je suis nouveau à MVVM
et C#. Si ma question ne vous est pas claire, demandez-moi s'il vous plaît. Je vous remercie.
Quel est le problème exact que vous rencontrez? Il y a deux choses qui ne vont pas avec votre code, dont l'une est que les propriétés de liaison n'appellent pas 'OnPropertyChanged' (' FirstName' et 'LastName'). 'ListPerson' devrait aussi être un' ObservableCollection' et non une liste régulière. Vérifiez votre fenêtre de sortie pour toute erreur de liaison. – PoweredByOrange
@PoweredByOrange je veux montrer l'élément sélectionné de la grille dans la zone de texte dans Panel2 –