2014-09-11 3 views
0

Quelqu'un peut-il aider avec ce qui suit, je suis là depuis un moment que je ne peux pas le faire fonctionner. Je veux enregistrer les données d'une boîte de liste wpf mvvm et l'ajouter à une liste et lier le listBox.wpf liaison article de la liste à un objet

J'ai un modèle de vue:

private const string StagePropertyName = "Stage"; 
     public string Stage 
     { 
      get 
      { 
       return _newProduct.Stage; 
      } 
      set 
      { 
       _newProduct.Stage = value; 
       RaisePropertyChanged(StagePropertyName); 
      } 
     } 

public MainViewModel() 
     { 
      _newProduct = new Product(); 
      CreateAddCommand(); 

     } 
private void CreateAddCommand() 
     { 
      AddCommand = new RelayCommand(AddExecute, CanExecuteAddCommand); 
     } 

     public void AddExecute() 
     { 
      Product.Add(_newProduct); 
     } 

Et XAML:

<ListBox Grid.Column="1" Grid.Row="2" Grid.RowSpan="2" Height="23" HorizontalAlignment="Left" Margin="20,5,0,0" Name="lstStage" VerticalAlignment="Top" Width="120" SelectedValuePath="Value" SelectedValue="{Binding Path=Stage, Mode=TwoWay}"> 
       <ListBoxItem>Item1</ListBoxItem> 
       <ListBoxItem>Item2</ListBoxItem> 
       <ListBoxItem>Item3</ListBoxItem>   
      </ListBox>   
      <Button Content="Add" Grid.Column="1" Grid.Row="6" Height="23" HorizontalAlignment="Left" Margin="25,10,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding Path=AddCommand}" /> 

public class Product 
    { 
     public string Name { get; set; } 
     public string Deposit { get; set; } 
     public string Lot { get; set; } 
     public string Stage { get; set; } 
     public string City { get; set; } 

     public static void Add(Product product) 
     { 
      MessageBox.Show(product.Stage); //here is null 

     } 
    } 

peine que j'ai lie la propriété SelectedItem/Valeur de lstStage.

Veuillez nous consulter.

+0

Veuillez indiquer la propriété/classe 'Product' qui expose la méthode' Add' pour ajouter une instance de classe Product. aussi s'il vous plaît afficher la propriété 'AddCommand' – pushpraj

+0

Mettez à jour le code s'il vous plaît jeter un oeil – user2483797

+1

essayez de supprimer' SelectedValuePath = "Value" SelectedValue = "{Chemin de liaison = Stage, Mode = TwoWay}" 'et ajoutez' SelectedItem = "{Binding Path = Stage, Mode = TwoWay} "' et voyez si vous êtes toujours confronté au problème. – pushpraj

Répondre

2

Je ne sais pas si j'ai bien compris votre question. Souhaitez-vous accéder à "selectedItem" de List-box lorsque vous cliquez sur le bouton Ajouter? Si c'est l'exigence, une façon d'y parvenir est d'utiliser le paramètre de commande comme indiqué ci-dessous.

<Button Content="Add" Grid.Column="1" Grid.Row="6" Height="23" HorizontalAlignment="Left" Margin="25,10,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding Path=AddCommand}" CommandParameter="{Binding ElementName=lstStage, Path=SelectedItem}"/> 

Vous pouvez ensuite accéder à selectedItem dans votre fonction ICommand.Execute en tant que paramètre.

Questions connexes