在WPF的MVVM框架中获取下拉选择列表中的选中项
文章概述:
在线播放:http://v.youku.com/v_show/id_XODA5OTYzMDU2.html
CS代码例如以下所看到的:
综合上述两端代码可知,和MainWindow视图管理的ViewModel类是MainWindowModel类,XAML代码中的Binding所指的成员就是该ViewModel类中的成员。比方CompanyNames和CurrentCompany都是MainWindowModel的属性。
通过为ComboBox指定DisplayMemberPath属性,能够告知程序要显示的内容。因为CompanyNames的类型是List<Company>的,因此DisplayMemberPath所指定的字符串就是Company类的CompanyName属性名。代码例如以下:
而和button的单击操作则是由Command属性指定的命令进行处理的,仍然是和MainWindowModel的成员ShowSelectedCompanyCommand关联绑定。这是一个自己定义命令,对于当前的button而言,详细运行的代码例如以下所看到的:
至此,通过ViewModel的CurrentCompany属性既能够改动下拉列表中的选中项,又能够在ViewModel中获取到下拉列表中的选中项。
本演示介绍怎样在WPF的MVVM框架中。通过数据绑定的方式获取下拉列表中的选中项。程序执行后的效果例如以下图所看到的:
在线播放:http://v.youku.com/v_show/id_XODA5OTYzMDU2.html
温馨提示:假设屏幕录像和代码不能正常下载,可站内留言。或发邮件到524130780@QQ.COM
XAML代码例如以下所看到的:
<Window x:Class="Demo02Ex01.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="262" Width="402"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> </Grid.ColumnDefinitions> <ComboBox Grid.Row="0" Grid.Column="0" Width="300" Height="30" ItemsSource="{Binding CompanyNames}" DisplayMemberPath="CompanyName" SelectedItem="{Binding CurrentCompany}" /> <Button Grid.Row="1" Width="100" Height="70" Content="获取选择项" Command="{Binding Path=ShowSelectedCompanyCommand}"/> </Grid> </Window>
CS代码例如以下所看到的:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new MainWindowModel(); } }
综合上述两端代码可知,和MainWindow视图管理的ViewModel类是MainWindowModel类,XAML代码中的Binding所指的成员就是该ViewModel类中的成员。比方CompanyNames和CurrentCompany都是MainWindowModel的属性。
MainViewModel类的代码例如以下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; namespace Demo02Ex01.ViewModels { public class MainWindowModel { public MainWindowModel() { this.CompanyNames = new List<Company>(); this.CompanyNames.Add(new Company() { CompanyName = "中国核工业集团公司", Address = "" }); this.CompanyNames.Add(new Company() { CompanyName = "中国航科技集团公司", Address = "" }); this.CompanyNames.Add(new Company() { CompanyName = "中国电科技集团公司", Address = "" }); this.CompanyNames.Add(new Company() { CompanyName = "中国长江三峡project发总公司", Address = "" }); this.CompanyNames.Add(new Company() { CompanyName = "中国移通信集团公司", Address = "" }); this.CurrentCompany = this.CompanyNames[1]; this.ShowSelectedCompanyCommand = new DelegateCommand(this.ShowSelectedCompanyHandler); } public List<Company> CompanyNames { get; set; } public Company CurrentCompany { get; set; } public DelegateCommand ShowSelectedCompanyCommand { get; set; } private void ShowSelectedCompanyHandler(object sender, DelegateCommandEventArgs e) { MessageBox.Show(this.CurrentCompany.CompanyName); } } }
通过为ComboBox指定DisplayMemberPath属性,能够告知程序要显示的内容。因为CompanyNames的类型是List<Company>的,因此DisplayMemberPath所指定的字符串就是Company类的CompanyName属性名。代码例如以下:
public class Company { public string CompanyName { get; set; } public string Address { get; set; } }
而和button的单击操作则是由Command属性指定的命令进行处理的,仍然是和MainWindowModel的成员ShowSelectedCompanyCommand关联绑定。这是一个自己定义命令,对于当前的button而言,详细运行的代码例如以下所看到的:
private void ShowSelectedCompanyHandler(object sender, DelegateCommandEventArgs e) { MessageBox.Show(this.CurrentCompany.CompanyName); }
至此,通过ViewModel的CurrentCompany属性既能够改动下拉列表中的选中项,又能够在ViewModel中获取到下拉列表中的选中项。
posted on 2017-06-04 16:10 cynchanpin 阅读(3137) 评论(0) 编辑 收藏 举报