2014-09-11 3 views
0

Может ли кто-нибудь помочь в следующем, я был на некоторое время, я не могу заставить его работать. Я хочу сохранить данные из списка wpf mvvm и добавить его в список и связать listBox.wpf привязка элемента списка к объекту

У меня есть вид модели:

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); 
     } 

И 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 

     } 
    } 

Trouble я имею является обязательным свойством SelectedItem/значение lstStage.

Прошу совета.

+0

, пожалуйста, покажите свойство/класс 'Product', который предоставляет метод Add для добавления экземпляра класса Product. также пожалуйста, покажите свойство 'AddCommand' – pushpraj

+0

Обновите код, пожалуйста, посмотрите – user2483797

+1

попробуйте удалить' SelectedValuePath = "Значение" SelectedValue = "{Binding Path = Stage, Mode = TwoWay}" и добавить 'SelectedItem =" {Binding Path = Stage, Mode = TwoWay} "' и посмотреть, все ли вы столкнулись с проблемой. – pushpraj

ответ

2

Я не совсем уверен, понял ли я ваш вопрос. Вы хотите получить доступ к элементу «selectedItem» в поле «Список» при нажатии кнопки «Добавить»? Если это требование, один из способов его достижения - использовать параметр команды, как показано ниже.

<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}"/> 

Вы можете получить доступ к выбранному элементу внутри своей функции ICommand.Execute в качестве параметра.

Смежные вопросы