In dem unten stehenden Code, wenn der Benutzer Kunde auswählt in der Combobox, die der Name des Kunden wird angezeigt in einem Textfeld. Ich fülle das Feld Combox mit einer ObservableCollection-Eigenschaft auf meinem ViewModel, aber wie behandle ich das Ereignis SelectedItem in meinem ViewModel?
Es ist einfach, dies mit Code-Behind wie unten gezeigt zu implementieren, aber wie kann ich dies mit dem MVVM-Muster tun?
Ich habe derzeit DelegateCommand y AttachedBehaviors in meiner grundlegenden MVVM-Vorlage, die ich verwenden kann, aber ich kann nicht herausfinden, wie man sie zu feuern, wenn "Combobox ein neues Element auswählt" zu bekommen.
Ansicht:
<Window.Resources>
<DataTemplate x:Key="CustomerTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<DockPanel LastChildFill="False" Margin="10">
<ComboBox
x:Name="CustomerList"
ItemTemplate="{StaticResource CustomerTemplate}"
HorizontalAlignment="Left"
DockPanel.Dock="Top"
Width="200"
SelectionChanged="CustomerSelected"
ItemsSource="{Binding Customers}"/>
<TextBlock x:Name="CurrentlySelectedCustomer"/>
</DockPanel>
Code Behind:
private void CustomerSelected(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
Customer customer = (Customer)CustomerList.SelectedItem;
CurrentlySelectedCustomer.Text = String.Format("{0} {1}", customer.FirstName, customer.LastName);
}