我有一个绑定到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执行此操作。
我的问题:我从哪里开始?
答案 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...
}
}
}