0

ObservableCollectionCustomersにバインドされている 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 を使用してこれを行う方法がわかりません。

私の質問:どこから始めればいいですか?

4

2 に答える 2

1

「現在選択されている」オブジェクトをビューモデルに追加し、リストボックスの「SelectedItem」プロパティにバインドできます。次に、「set」アクセサーで目的のアクションを実行します。

于 2013-02-07T22:28:51.100 に答える
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...
        }
    }
}
于 2013-02-07T23:05:07.590 に答える