wpf将列表框项绑定到对象

时间:2014-09-11 11:40:30

标签: wpf mvvm listbox

任何人都可以帮助以下,我已经有一段时间了,我无法使其发挥作用。 我想保存列表框wpf mvvm中的数据并将其添加到列表并绑定listBox。

我有一个视图模型:

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

        }
    }

麻烦我正在绑定lstStage的SelectedItem / Value属性。

请建议。

1 个答案:

答案 0 :(得分:2)

我不太确定我是否理解你的问题。您想要访问列表框&#34; selectedItem&#34;当你点击添加按钮?如果这是要求,实现它的一种方法是使用命令参数,如下所示。

<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函数中访问selectedItem作为参数。