在下面的代码中,当用户在组合框中选择客户时,客户的姓名会显示在文本框中。我用 ViewModel 上的 ObservableCollection 属性填充 Combox 框,但是如何处理 ViewModel 中的 SelectedItem 事件?
使用代码隐藏很容易实现这一点,如下所示,但是如何使用 MVVM 模式来实现呢?
我目前在我可以使用的基本 MVVM 模板中有DelegateCommand和AttachedBehaviors ,但我不知道如何让它们在“组合框选择新项目”时触发。
看法:
<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);
}