项目选择上的WPF调用函数(使用MVVM范例)

时间:2013-02-07 22:23:02

标签: c# wpf data-binding mvvm mvvm-light

我有一个绑定到ObservableCollection客户的ListBox。 XAML代码是:

<ListBox x:Name="lb_Customers" Height="683" ItemsSource="{Binding Path=Customers, UpdateSourceTrigger=PropertyChanged}">
     <ListBox.ItemTemplate>
          <DataTemplate>
               <Label Margin="0,0,0,0" Padding="0,0,0,0" Content="{Binding Name}" />
          </DataTemplate>
      </ListBox.ItemTemplate>
</ListBox>

这指向我的MainViewModel类中的一些代码:

public ObservableCollection<Customer> Customers
{
    get { return _customers; }
    set
    {
        Set("Customers", ref _customers, value);
        this.RaisePropertyChanged("Customers");
    }
}

当我在此列表框中选择客户时,我想执行一些代码并编译客户的订单历史记录。

但是,我不知道如何使用DataBinding / CommandBinding执行此操作。

我的问题:我从哪里开始?

2 个答案:

答案 0 :(得分:1)

您可以向viewmodel添加“currentselected”对象,并将其绑定到列表框的“SelectedItem”属性。然后在“设置”访问器中执行所需的操作。

答案 1 :(得分:1)

正如托蒙德所说:

更改

<ListBox x:Name="lb_Customers" Height="683" ItemsSource="{Binding Path=Customers, UpdateSourceTrigger=PropertyChanged}">

<ListBox x:Name="lb_Customers" Height="683" ItemsSource="{Binding Path=Customers, UpdateSourceTrigger=PropertyChanged}", SelectedValue="{Binding SelectedCustomer}">

然后在您的ViewModel中添加:

private Customer _selectedCustomer;
public Customer SelectedCustomer
{
    get {}
    set
    {
        if (_selectedCustomer != value)
        {
            Set("SelectedCustomer", ref _selectedCustomer, value);
            this.RaisePropertyChanged("SelectedCustomer");

            // Execute other changes to the VM based on this selection...
        }
    }
}