В приведенном ниже коде , когда пользователь выбирает в поле со списком Customer , имя клиента отображается в текстовом поле . Я заполняю поле Combox свойством ObservableCollection в моей ViewModel, но как мне обработать событие SelectedItem в моей ViewModel?
Это легко реализовать с помощью кода, как показано ниже, но как мне сделать это с шаблоном MVVM?
В настоящее время у меня есть DelegateCommand и AttachedBehaviors в моем базовом шаблоне MVVM, который я могу использовать, но я не могу понять, как заставить их срабатывать, когда "выпадающий список выбирает новый пункт».
Вид:
<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>
Код сзади:
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);
}